{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "toc_visible": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# **Elliptic++ Actors (Wallet Addresses) Dataset**\n",
        "\n",
        "***Note: \"Actor\" refers to a Bitcoin wallet address***\n",
        "\n",
        "---\n",
        "---\n",
        "\n",
        "\n",
        "Released by: Youssef Elmougy, Ling Liu\n",
        "\n",
        "\n",
        "\n",
        "School of Computer Science, Georgia Institute of Technology\n",
        "\n",
        "Contact: yelmougy3@gatech.edu\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "Github Repository: [https://www.github.com/git-disl/EllipticPlusPlus](https://www.github.com/git-disl/EllipticPlusPlus)\n",
        "\n",
        "\n",
        "If you use our dataset in your work, please cite our paper:\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        ">> Youssef Elmougy and Ling Liu. 2023. Demystifying Fraudulent Transactions and Illicit Nodes in the Bitcoin Network for Financial Forensics.\n",
        "\n",
        "---\n",
        "\n"
      ],
      "metadata": {
        "id": "O34u-DVsX4jx"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## [SETUP] Import libraries and csv files "
      ],
      "metadata": {
        "id": "ReHrhaPiaiI-"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Download dataset from: [https://www.github.com/git-disl/EllipticPlusPlus](https://www.github.com/git-disl/EllipticPlusPlus)"
      ],
      "metadata": {
        "id": "TLi0Zc7j6Rb6"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "eUbJT_J-A1Mw",
        "outputId": "4020ff04-efa0-4b11-be41-a8507f0bf55e"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
          ]
        }
      ],
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/wallets_features.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/wallets_classes.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/AddrAddr_edgelist.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/AddrTx_edgelist.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/TxAddr_edgelist.csv ./\n",
        "!cp drive/My\\ Drive/Elliptic++\\ Dataset/wallets_features_classes_combined.csv ./"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kz7WtWhG6MtI",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "076dbd94-a606-4648-b1c7-c1839a9b5e79"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Requirement already satisfied: ipython in /usr/local/lib/python3.8/dist-packages (8.9.0)\n",
            "Requirement already satisfied: pickleshare in /usr/local/lib/python3.8/dist-packages (from ipython) (0.7.5)\n",
            "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.30 in /usr/local/lib/python3.8/dist-packages (from ipython) (3.0.36)\n",
            "Requirement already satisfied: traitlets>=5 in /usr/local/lib/python3.8/dist-packages (from ipython) (5.7.1)\n",
            "Requirement already satisfied: backcall in /usr/local/lib/python3.8/dist-packages (from ipython) (0.2.0)\n",
            "Requirement already satisfied: pygments>=2.4.0 in /usr/local/lib/python3.8/dist-packages (from ipython) (2.6.1)\n",
            "Requirement already satisfied: stack-data in /usr/local/lib/python3.8/dist-packages (from ipython) (0.6.2)\n",
            "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.8/dist-packages (from ipython) (4.8.0)\n",
            "Requirement already satisfied: jedi>=0.16 in /usr/local/lib/python3.8/dist-packages (from ipython) (0.18.2)\n",
            "Requirement already satisfied: decorator in /usr/local/lib/python3.8/dist-packages (from ipython) (4.4.2)\n",
            "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.8/dist-packages (from ipython) (0.1.6)\n",
            "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.8/dist-packages (from jedi>=0.16->ipython) (0.8.3)\n",
            "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.8/dist-packages (from pexpect>4.3->ipython) (0.7.0)\n",
            "Requirement already satisfied: wcwidth in /usr/local/lib/python3.8/dist-packages (from prompt-toolkit<3.1.0,>=3.0.30->ipython) (0.2.5)\n",
            "Requirement already satisfied: asttokens>=2.1.0 in /usr/local/lib/python3.8/dist-packages (from stack-data->ipython) (2.2.1)\n",
            "Requirement already satisfied: pure-eval in /usr/local/lib/python3.8/dist-packages (from stack-data->ipython) (0.2.2)\n",
            "Requirement already satisfied: executing>=1.2.0 in /usr/local/lib/python3.8/dist-packages (from stack-data->ipython) (1.2.0)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.8/dist-packages (from asttokens>=2.1.0->stack-data->ipython) (1.15.0)\n"
          ]
        }
      ],
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sns\n",
        "import networkx as nx\n",
        "import plotly.graph_objs as go \n",
        "import plotly.offline as py \n",
        "import math\n",
        "from collections import Counter\n",
        "\n",
        "!pip install -U ipython \n",
        "from IPython.core.interactiveshell import InteractiveShell\n",
        "InteractiveShell.ast_node_interactivity = 'all'"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "from sklearn.metrics import precision_recall_fscore_support\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.neural_network import MLPClassifier\n",
        "from sklearn.metrics import f1_score, accuracy_score, confusion_matrix\n",
        "from sklearn.cluster import KMeans\n",
        "from sklearn.model_selection import GridSearchCV\n",
        "from sklearn.preprocessing import MinMaxScaler\n",
        "from sklearn.ensemble import VotingClassifier\n",
        "from sklearn.base import clone \n",
        "\n",
        "import xgboost as xgb"
      ],
      "metadata": {
        "id": "TKJFAkVLp34j"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "!pip install eli5\n",
        "import eli5\n",
        "from eli5.sklearn import PermutationImportance"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bRW1hh3S4pbS",
        "outputId": "5eb48ea7-b0dd-4804-aaf3-6e438b3eef65"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Collecting eli5\n",
            "  Downloading eli5-0.13.0.tar.gz (216 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m216.2/216.2 KB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h  Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "Requirement already satisfied: attrs>17.1.0 in /usr/local/lib/python3.8/dist-packages (from eli5) (22.2.0)\n",
            "Collecting jinja2>=3.0.0\n",
            "  Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m133.1/133.1 KB\u001b[0m \u001b[31m17.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: numpy>=1.9.0 in /usr/local/lib/python3.8/dist-packages (from eli5) (1.21.6)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.8/dist-packages (from eli5) (1.7.3)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.8/dist-packages (from eli5) (1.15.0)\n",
            "Requirement already satisfied: scikit-learn>=0.20 in /usr/local/lib/python3.8/dist-packages (from eli5) (1.0.2)\n",
            "Requirement already satisfied: graphviz in /usr/local/lib/python3.8/dist-packages (from eli5) (0.10.1)\n",
            "Requirement already satisfied: tabulate>=0.7.7 in /usr/local/lib/python3.8/dist-packages (from eli5) (0.8.10)\n",
            "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.8/dist-packages (from jinja2>=3.0.0->eli5) (2.0.1)\n",
            "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.20->eli5) (1.2.0)\n",
            "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.8/dist-packages (from scikit-learn>=0.20->eli5) (3.1.0)\n",
            "Building wheels for collected packages: eli5\n",
            "  Building wheel for eli5 (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Created wheel for eli5: filename=eli5-0.13.0-py2.py3-none-any.whl size=107748 sha256=4ad64e3b8b283172c1ae01f750cdea27fcc42eeef533a5a0428c77fa474f08d2\n",
            "  Stored in directory: /root/.cache/pip/wheels/85/ac/25/ffcd87ef8f9b1eec324fdf339359be71f22612459d8c75d89c\n",
            "Successfully built eli5\n",
            "Installing collected packages: jinja2, eli5\n",
            "  Attempting uninstall: jinja2\n",
            "    Found existing installation: Jinja2 2.11.3\n",
            "    Uninstalling Jinja2-2.11.3:\n",
            "      Successfully uninstalled Jinja2-2.11.3\n",
            "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
            "notebook 5.7.16 requires jinja2<=3.0.0, but you have jinja2 3.1.2 which is incompatible.\n",
            "google-colab 1.0.0 requires ipython~=7.9.0, but you have ipython 8.9.0 which is incompatible.\n",
            "flask 1.1.4 requires Jinja2<3.0,>=2.10.1, but you have jinja2 3.1.2 which is incompatible.\u001b[0m\u001b[31m\n",
            "\u001b[0mSuccessfully installed eli5-0.13.0 jinja2-3.1.2\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Actors Dataset Overview\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "This section loads the 5 csv files (wallets_features, wallets_classes, AddrAddr_edgelist, AddrTx_edgelist, TxAddr_edgelist) and provides a quick overview of the dataset structure and features."
      ],
      "metadata": {
        "id": "y3JLmL3SfJqP"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Load saved actors dataset csv files:"
      ],
      "metadata": {
        "id": "ZcdjXmV8gr8S"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"\\nActors features: \\n\")\n",
        "df_wallets_features = pd.read_csv(\"wallets_features.csv\")\n",
        "df_wallets_features\n",
        "\n",
        "print(\"\\nActors Classes: \\n\")\n",
        "df_wallets_classes = pd.read_csv(\"wallets_classes.csv\")\n",
        "df_wallets_classes\n",
        "\n",
        "print(\"\\nAddress-Address edgelist: \\n\") #Actor Interaction graph edgelist\n",
        "df_AddrAddr_edgelist = pd.read_csv(\"AddrAddr_edgelist.csv\")\n",
        "df_AddrAddr_edgelist\n",
        "\n",
        "print(\"\\nAddress-Transaction edgelist: \\n\") #Address-Transaction graph edgelist\n",
        "df_AddrTx_edgelist = pd.read_csv(\"AddrTx_edgelist.csv\")\n",
        "df_AddrTx_edgelist\n",
        "\n",
        "print(\"\\nTransaction-Address edgelist: \\n\") #Address-Transaction graph edgelist\n",
        "df_TxAddr_edgelist = pd.read_csv(\"TxAddr_edgelist.csv\")\n",
        "df_TxAddr_edgelist\n",
        "\n",
        "# combined features and classes csv files for convenience\n",
        "df_wallets_features_classes_combined = pd.read_csv(\"wallets_features_classes_combined.csv\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "dNNEwGmae2Eo",
        "outputId": "fe1af67e-d31b-49bf-e19b-7f93dd6fdb98"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Actors features: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                    address  Time step  num_txs_as_sender  \\\n",
              "0         111112TykSw72ztDN2WJger4cynzWYC5w         25                0.0   \n",
              "1         1111DAYXhoxZx2tsRnzimfozo783x1yC2         25                0.0   \n",
              "2         1111DAYXhoxZx2tsRnzimfozo783x1yC2         29                0.0   \n",
              "3         1111DAYXhoxZx2tsRnzimfozo783x1yC2         39                0.0   \n",
              "4         1111DAYXhoxZx2tsRnzimfozo783x1yC2         39                0.0   \n",
              "...                                     ...        ...                ...   \n",
              "1268255  3R2Uw5MRdSSigp8AjfT7K5es6Hupm4qLSq         31                1.0   \n",
              "1268256  3R2VBFbqHGC4bQ7b4ixN4jZTdv7RMbEYtf         44                0.0   \n",
              "1268257  3R2WFmRwbDeo3rMVVu5J3jjMxAuQYYWAid          9                0.0   \n",
              "1268258  3R2WTZGYLmbJQyoDSBftJsPRvF1mSEtkh6          3                0.0   \n",
              "1268259  3R2bm6iqbzcVpEeFCSFarS56b56QfjyiSW          9                1.0   \n",
              "\n",
              "         num_txs_as receiver  first_block_appeared_in  last_block_appeared_in  \\\n",
              "0                        1.0                 439586.0                439586.0   \n",
              "1                        8.0                 439589.0                485959.0   \n",
              "2                        8.0                 439589.0                485959.0   \n",
              "3                        8.0                 439589.0                485959.0   \n",
              "4                        8.0                 439589.0                485959.0   \n",
              "...                      ...                      ...                     ...   \n",
              "1268255                  1.0                 451684.0                451685.0   \n",
              "1268256                  1.0                 477895.0                477895.0   \n",
              "1268257                  1.0                 407342.0                407342.0   \n",
              "1268258                  1.0                 395235.0                395235.0   \n",
              "1268259                  0.0                 407333.0                407333.0   \n",
              "\n",
              "         lifetime_in_blocks  total_txs  first_sent_block  \\\n",
              "0                       0.0        1.0               0.0   \n",
              "1                   46370.0        8.0               0.0   \n",
              "2                   46370.0        8.0               0.0   \n",
              "3                   46370.0        8.0               0.0   \n",
              "4                   46370.0        8.0               0.0   \n",
              "...                     ...        ...               ...   \n",
              "1268255                 1.0        2.0          451685.0   \n",
              "1268256                 0.0        1.0               0.0   \n",
              "1268257                 0.0        1.0               0.0   \n",
              "1268258                 0.0        1.0               0.0   \n",
              "1268259                 0.0        1.0          407333.0   \n",
              "\n",
              "         first_received_block  ...  blocks_btwn_output_txs_min  \\\n",
              "0                    439586.0  ...                         0.0   \n",
              "1                    439589.0  ...                         0.0   \n",
              "2                    439589.0  ...                         0.0   \n",
              "3                    439589.0  ...                         0.0   \n",
              "4                    439589.0  ...                         0.0   \n",
              "...                       ...  ...                         ...   \n",
              "1268255              451684.0  ...                         0.0   \n",
              "1268256              477895.0  ...                         0.0   \n",
              "1268257              407342.0  ...                         0.0   \n",
              "1268258              395235.0  ...                         0.0   \n",
              "1268259                   0.0  ...                         0.0   \n",
              "\n",
              "         blocks_btwn_output_txs_max  blocks_btwn_output_txs_mean  \\\n",
              "0                               0.0                     0.000000   \n",
              "1                           20164.0                  6624.285714   \n",
              "2                           20164.0                  6624.285714   \n",
              "3                           20164.0                  6624.285714   \n",
              "4                           20164.0                  6624.285714   \n",
              "...                             ...                          ...   \n",
              "1268255                         0.0                     0.000000   \n",
              "1268256                         0.0                     0.000000   \n",
              "1268257                         0.0                     0.000000   \n",
              "1268258                         0.0                     0.000000   \n",
              "1268259                         0.0                     0.000000   \n",
              "\n",
              "         blocks_btwn_output_txs_median  num_addr_transacted_multiple  \\\n",
              "0                                  0.0                           0.0   \n",
              "1                               8060.0                           0.0   \n",
              "2                               8060.0                           0.0   \n",
              "3                               8060.0                           0.0   \n",
              "4                               8060.0                           0.0   \n",
              "...                                ...                           ...   \n",
              "1268255                            0.0                           0.0   \n",
              "1268256                            0.0                           0.0   \n",
              "1268257                            0.0                           0.0   \n",
              "1268258                            0.0                           0.0   \n",
              "1268259                            0.0                           0.0   \n",
              "\n",
              "         transacted_w_address_total  transacted_w_address_min  \\\n",
              "0                              24.0                       1.0   \n",
              "1                               8.0                       1.0   \n",
              "2                               8.0                       1.0   \n",
              "3                               8.0                       1.0   \n",
              "4                               8.0                       1.0   \n",
              "...                             ...                       ...   \n",
              "1268255                         3.0                       1.0   \n",
              "1268256                         1.0                       1.0   \n",
              "1268257                         1.0                       1.0   \n",
              "1268258                         1.0                       1.0   \n",
              "1268259                         1.0                       1.0   \n",
              "\n",
              "         transacted_w_address_max  transacted_w_address_mean  \\\n",
              "0                             1.0                        1.0   \n",
              "1                             1.0                        1.0   \n",
              "2                             1.0                        1.0   \n",
              "3                             1.0                        1.0   \n",
              "4                             1.0                        1.0   \n",
              "...                           ...                        ...   \n",
              "1268255                       1.0                        1.0   \n",
              "1268256                       1.0                        1.0   \n",
              "1268257                       1.0                        1.0   \n",
              "1268258                       1.0                        1.0   \n",
              "1268259                       1.0                        1.0   \n",
              "\n",
              "         transacted_w_address_median  \n",
              "0                                1.0  \n",
              "1                                1.0  \n",
              "2                                1.0  \n",
              "3                                1.0  \n",
              "4                                1.0  \n",
              "...                              ...  \n",
              "1268255                          1.0  \n",
              "1268256                          1.0  \n",
              "1268257                          1.0  \n",
              "1268258                          1.0  \n",
              "1268259                          1.0  \n",
              "\n",
              "[1268260 rows x 57 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-9581ea60-d34a-4cc9-804b-29709baa47a1\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>address</th>\n",
              "      <th>Time step</th>\n",
              "      <th>num_txs_as_sender</th>\n",
              "      <th>num_txs_as receiver</th>\n",
              "      <th>first_block_appeared_in</th>\n",
              "      <th>last_block_appeared_in</th>\n",
              "      <th>lifetime_in_blocks</th>\n",
              "      <th>total_txs</th>\n",
              "      <th>first_sent_block</th>\n",
              "      <th>first_received_block</th>\n",
              "      <th>...</th>\n",
              "      <th>blocks_btwn_output_txs_min</th>\n",
              "      <th>blocks_btwn_output_txs_max</th>\n",
              "      <th>blocks_btwn_output_txs_mean</th>\n",
              "      <th>blocks_btwn_output_txs_median</th>\n",
              "      <th>num_addr_transacted_multiple</th>\n",
              "      <th>transacted_w_address_total</th>\n",
              "      <th>transacted_w_address_min</th>\n",
              "      <th>transacted_w_address_max</th>\n",
              "      <th>transacted_w_address_mean</th>\n",
              "      <th>transacted_w_address_median</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>111112TykSw72ztDN2WJger4cynzWYC5w</td>\n",
              "      <td>25</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>439586.0</td>\n",
              "      <td>439586.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>439586.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>24.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1111DAYXhoxZx2tsRnzimfozo783x1yC2</td>\n",
              "      <td>25</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>485959.0</td>\n",
              "      <td>46370.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>20164.0</td>\n",
              "      <td>6624.285714</td>\n",
              "      <td>8060.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1111DAYXhoxZx2tsRnzimfozo783x1yC2</td>\n",
              "      <td>29</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>485959.0</td>\n",
              "      <td>46370.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>20164.0</td>\n",
              "      <td>6624.285714</td>\n",
              "      <td>8060.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1111DAYXhoxZx2tsRnzimfozo783x1yC2</td>\n",
              "      <td>39</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>485959.0</td>\n",
              "      <td>46370.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>20164.0</td>\n",
              "      <td>6624.285714</td>\n",
              "      <td>8060.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1111DAYXhoxZx2tsRnzimfozo783x1yC2</td>\n",
              "      <td>39</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>485959.0</td>\n",
              "      <td>46370.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>439589.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>20164.0</td>\n",
              "      <td>6624.285714</td>\n",
              "      <td>8060.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1268255</th>\n",
              "      <td>3R2Uw5MRdSSigp8AjfT7K5es6Hupm4qLSq</td>\n",
              "      <td>31</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>451684.0</td>\n",
              "      <td>451685.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.0</td>\n",
              "      <td>451685.0</td>\n",
              "      <td>451684.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1268256</th>\n",
              "      <td>3R2VBFbqHGC4bQ7b4ixN4jZTdv7RMbEYtf</td>\n",
              "      <td>44</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>477895.0</td>\n",
              "      <td>477895.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>477895.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1268257</th>\n",
              "      <td>3R2WFmRwbDeo3rMVVu5J3jjMxAuQYYWAid</td>\n",
              "      <td>9</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>407342.0</td>\n",
              "      <td>407342.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>407342.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1268258</th>\n",
              "      <td>3R2WTZGYLmbJQyoDSBftJsPRvF1mSEtkh6</td>\n",
              "      <td>3</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>395235.0</td>\n",
              "      <td>395235.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>395235.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1268259</th>\n",
              "      <td>3R2bm6iqbzcVpEeFCSFarS56b56QfjyiSW</td>\n",
              "      <td>9</td>\n",
              "      <td>1.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>407333.0</td>\n",
              "      <td>407333.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>407333.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>1268260 rows × 57 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9581ea60-d34a-4cc9-804b-29709baa47a1')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-9581ea60-d34a-4cc9-804b-29709baa47a1 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-9581ea60-d34a-4cc9-804b-29709baa47a1');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 15
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Actors Classes: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                   address  class\n",
              "0        111112TykSw72ztDN2WJger4cynzWYC5w      2\n",
              "1        1111DAYXhoxZx2tsRnzimfozo783x1yC2      3\n",
              "2         1111VHuXEzHaRCgXbVwojtaP7Co3QABb      2\n",
              "3       111218KKkh1JJFRHbwM16AwCiVCc4m7he1      3\n",
              "4        1115LWW3xsD9jT9VRY7viCN9S34RVAAuA      2\n",
              "...                                    ...    ...\n",
              "822937  3R2Uw5MRdSSigp8AjfT7K5es6Hupm4qLSq      3\n",
              "822938  3R2VBFbqHGC4bQ7b4ixN4jZTdv7RMbEYtf      3\n",
              "822939  3R2WFmRwbDeo3rMVVu5J3jjMxAuQYYWAid      3\n",
              "822940  3R2WTZGYLmbJQyoDSBftJsPRvF1mSEtkh6      3\n",
              "822941  3R2bm6iqbzcVpEeFCSFarS56b56QfjyiSW      3\n",
              "\n",
              "[822942 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-3d0d3bb1-0f37-4b9c-b660-f2f34b12e224\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>address</th>\n",
              "      <th>class</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>111112TykSw72ztDN2WJger4cynzWYC5w</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1111DAYXhoxZx2tsRnzimfozo783x1yC2</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1111VHuXEzHaRCgXbVwojtaP7Co3QABb</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>111218KKkh1JJFRHbwM16AwCiVCc4m7he1</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1115LWW3xsD9jT9VRY7viCN9S34RVAAuA</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>822937</th>\n",
              "      <td>3R2Uw5MRdSSigp8AjfT7K5es6Hupm4qLSq</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>822938</th>\n",
              "      <td>3R2VBFbqHGC4bQ7b4ixN4jZTdv7RMbEYtf</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>822939</th>\n",
              "      <td>3R2WFmRwbDeo3rMVVu5J3jjMxAuQYYWAid</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>822940</th>\n",
              "      <td>3R2WTZGYLmbJQyoDSBftJsPRvF1mSEtkh6</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>822941</th>\n",
              "      <td>3R2bm6iqbzcVpEeFCSFarS56b56QfjyiSW</td>\n",
              "      <td>3</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>822942 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3d0d3bb1-0f37-4b9c-b660-f2f34b12e224')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-3d0d3bb1-0f37-4b9c-b660-f2f34b12e224 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-3d0d3bb1-0f37-4b9c-b660-f2f34b12e224');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 15
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Address-Address edgelist: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                              input_address  \\\n",
              "0        14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a   \n",
              "1        14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a   \n",
              "2        13Lhad3SAmu2vqYg2dxbNcxH7LE77kJu2w   \n",
              "3        1MAQQZn7EHP6J3erXByCciFiVcgS8ZhWqz   \n",
              "4        1MAQQZn7EHP6J3erXByCciFiVcgS8ZhWqz   \n",
              "...                                     ...   \n",
              "2868959  3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh   \n",
              "2868960  3DzbpEogZ1mn9FgCHcmzYPLDbV9GuxYHpi   \n",
              "2868961  34yD1sQg6C16aANCtibYXRj5NsX6tt4v5R   \n",
              "2868962  1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2   \n",
              "2868963  1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2   \n",
              "\n",
              "                             output_address  \n",
              "0        1GASxu5nMntiRKdVtTVRvEbP965G51bhHH  \n",
              "1        14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a  \n",
              "2        1GFdrdgtG34GChM8SMpMwcXFc4nYbH1A5G  \n",
              "3        19q57SeCEzTnWrWVXA43nZzhSiXkYggh7c  \n",
              "4        1Kk1NVYnCE8ALXDhgMM6HqTt1jDSvi6QBA  \n",
              "...                                     ...  \n",
              "2868959  3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh  \n",
              "2868960  38jMiiZs2C5n5MPkyc5pSA7wwW6H4p6hPa  \n",
              "2868961  3G9b7hWZccuft1V4eGUcZqTZaxsqx699bM  \n",
              "2868962  1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2  \n",
              "2868963  15T4xJj6XxyPZWGLPR3S72hD9f9YzUQf36  \n",
              "\n",
              "[2868964 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-08f4f543-1ad2-435c-a6df-74e3f0254ecd\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>input_address</th>\n",
              "      <th>output_address</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a</td>\n",
              "      <td>1GASxu5nMntiRKdVtTVRvEbP965G51bhHH</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a</td>\n",
              "      <td>14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>13Lhad3SAmu2vqYg2dxbNcxH7LE77kJu2w</td>\n",
              "      <td>1GFdrdgtG34GChM8SMpMwcXFc4nYbH1A5G</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1MAQQZn7EHP6J3erXByCciFiVcgS8ZhWqz</td>\n",
              "      <td>19q57SeCEzTnWrWVXA43nZzhSiXkYggh7c</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1MAQQZn7EHP6J3erXByCciFiVcgS8ZhWqz</td>\n",
              "      <td>1Kk1NVYnCE8ALXDhgMM6HqTt1jDSvi6QBA</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2868959</th>\n",
              "      <td>3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh</td>\n",
              "      <td>3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2868960</th>\n",
              "      <td>3DzbpEogZ1mn9FgCHcmzYPLDbV9GuxYHpi</td>\n",
              "      <td>38jMiiZs2C5n5MPkyc5pSA7wwW6H4p6hPa</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2868961</th>\n",
              "      <td>34yD1sQg6C16aANCtibYXRj5NsX6tt4v5R</td>\n",
              "      <td>3G9b7hWZccuft1V4eGUcZqTZaxsqx699bM</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2868962</th>\n",
              "      <td>1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2</td>\n",
              "      <td>1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2868963</th>\n",
              "      <td>1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2</td>\n",
              "      <td>15T4xJj6XxyPZWGLPR3S72hD9f9YzUQf36</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>2868964 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-08f4f543-1ad2-435c-a6df-74e3f0254ecd')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-08f4f543-1ad2-435c-a6df-74e3f0254ecd button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-08f4f543-1ad2-435c-a6df-74e3f0254ecd');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 15
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Address-Transaction edgelist: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                             input_address       txId\n",
              "0       14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a  230325127\n",
              "1       13Lhad3SAmu2vqYg2dxbNcxH7LE77kJu2w  230325139\n",
              "2       1MAQQZn7EHP6J3erXByCciFiVcgS8ZhWqz   86875675\n",
              "3       16zs5SVSyADh5WrLNbZbpRLsBsN5uEzgeK  230325147\n",
              "4       1QJpwtUorBKPGUJkSyrRcBKTAHq4CXrdYh  230325154\n",
              "...                                    ...        ...\n",
              "477112   1HdnGvuc21Y4QfBEHUc3NFRJhGywdSFUb  157659046\n",
              "477113  3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh  157659306\n",
              "477114  3DzbpEogZ1mn9FgCHcmzYPLDbV9GuxYHpi  157668825\n",
              "477115  34yD1sQg6C16aANCtibYXRj5NsX6tt4v5R  125788182\n",
              "477116  1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2  157670868\n",
              "\n",
              "[477117 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-b2263971-8386-4ddb-8b11-40be8645a0ce\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>input_address</th>\n",
              "      <th>txId</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a</td>\n",
              "      <td>230325127</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>13Lhad3SAmu2vqYg2dxbNcxH7LE77kJu2w</td>\n",
              "      <td>230325139</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1MAQQZn7EHP6J3erXByCciFiVcgS8ZhWqz</td>\n",
              "      <td>86875675</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>16zs5SVSyADh5WrLNbZbpRLsBsN5uEzgeK</td>\n",
              "      <td>230325147</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1QJpwtUorBKPGUJkSyrRcBKTAHq4CXrdYh</td>\n",
              "      <td>230325154</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>477112</th>\n",
              "      <td>1HdnGvuc21Y4QfBEHUc3NFRJhGywdSFUb</td>\n",
              "      <td>157659046</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>477113</th>\n",
              "      <td>3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh</td>\n",
              "      <td>157659306</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>477114</th>\n",
              "      <td>3DzbpEogZ1mn9FgCHcmzYPLDbV9GuxYHpi</td>\n",
              "      <td>157668825</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>477115</th>\n",
              "      <td>34yD1sQg6C16aANCtibYXRj5NsX6tt4v5R</td>\n",
              "      <td>125788182</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>477116</th>\n",
              "      <td>1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2</td>\n",
              "      <td>157670868</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>477117 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b2263971-8386-4ddb-8b11-40be8645a0ce')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-b2263971-8386-4ddb-8b11-40be8645a0ce button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-b2263971-8386-4ddb-8b11-40be8645a0ce');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 15
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "Transaction-Address edgelist: \n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "             txId                      output_address\n",
              "0       230325127  1GASxu5nMntiRKdVtTVRvEbP965G51bhHH\n",
              "1       230325127  14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a\n",
              "2       230325139  1GFdrdgtG34GChM8SMpMwcXFc4nYbH1A5G\n",
              "3        86875675  19q57SeCEzTnWrWVXA43nZzhSiXkYggh7c\n",
              "4        86875675  1Kk1NVYnCE8ALXDhgMM6HqTt1jDSvi6QBA\n",
              "...           ...                                 ...\n",
              "837119  157659306  3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh\n",
              "837120  157668825  38jMiiZs2C5n5MPkyc5pSA7wwW6H4p6hPa\n",
              "837121  125788182  3G9b7hWZccuft1V4eGUcZqTZaxsqx699bM\n",
              "837122  157670868  1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2\n",
              "837123  157670868  15T4xJj6XxyPZWGLPR3S72hD9f9YzUQf36\n",
              "\n",
              "[837124 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-3dacd5a6-2662-44dc-9597-990b7f8098b3\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId</th>\n",
              "      <th>output_address</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>230325127</td>\n",
              "      <td>1GASxu5nMntiRKdVtTVRvEbP965G51bhHH</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>230325127</td>\n",
              "      <td>14YRXHHof4BY1TVxN5FqYPcEdpmXiYT78a</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>230325139</td>\n",
              "      <td>1GFdrdgtG34GChM8SMpMwcXFc4nYbH1A5G</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>86875675</td>\n",
              "      <td>19q57SeCEzTnWrWVXA43nZzhSiXkYggh7c</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>86875675</td>\n",
              "      <td>1Kk1NVYnCE8ALXDhgMM6HqTt1jDSvi6QBA</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>837119</th>\n",
              "      <td>157659306</td>\n",
              "      <td>3MfN5to5K5be2RupWE8rjJHQ6V9L8ypWeh</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>837120</th>\n",
              "      <td>157668825</td>\n",
              "      <td>38jMiiZs2C5n5MPkyc5pSA7wwW6H4p6hPa</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>837121</th>\n",
              "      <td>125788182</td>\n",
              "      <td>3G9b7hWZccuft1V4eGUcZqTZaxsqx699bM</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>837122</th>\n",
              "      <td>157670868</td>\n",
              "      <td>1JERHCgwHG2Z7T3KjNpEwj3fJNX8vSfCX2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>837123</th>\n",
              "      <td>157670868</td>\n",
              "      <td>15T4xJj6XxyPZWGLPR3S72hD9f9YzUQf36</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>837124 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3dacd5a6-2662-44dc-9597-990b7f8098b3')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-3dacd5a6-2662-44dc-9597-990b7f8098b3 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-3dacd5a6-2662-44dc-9597-990b7f8098b3');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 15
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Data structure for an example actor (address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K):"
      ],
      "metadata": {
        "id": "5Qw43a6xe9rN"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"\\nwallets_features.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\\n\")\n",
        "df_wallets_features[df_wallets_features['address']=='39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K']\n",
        "\n",
        "print(\"\\nwallets_classes.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\\n\")\n",
        "df_wallets_classes[df_wallets_classes['address']=='39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K']\n",
        "\n",
        "print(\"\\nAddrAddr_edgelist.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K0\\n\")\n",
        "df_AddrAddr_edgelist[(df_AddrAddr_edgelist['input_address']=='39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K') | (df_AddrAddr_edgelist['output_address']=='39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K')]\n",
        "\n",
        "print(\"\\nAddrTx_edgelist.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K0\\n\")\n",
        "df_AddrTx_edgelist[df_AddrTx_edgelist['input_address']=='39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K']\n",
        "\n",
        "print(\"\\nTxAddr_edgelist.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K0\\n\")\n",
        "df_TxAddr_edgelist[df_TxAddr_edgelist['output_address']=='39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K']"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "BHp9b7S1e1-F",
        "outputId": "0fd2f605-9078-4941-ef43-e98e6a67d535"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "wallets_features.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                    address  Time step  num_txs_as_sender  \\\n",
              "1149250  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         23              420.0   \n",
              "1149251  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         23              420.0   \n",
              "1149252  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         23              420.0   \n",
              "1149253  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         23              420.0   \n",
              "1149254  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         24              420.0   \n",
              "...                                     ...        ...                ...   \n",
              "1149666  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         32              420.0   \n",
              "1149667  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         32              420.0   \n",
              "1149668  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         32              420.0   \n",
              "1149669  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         32              420.0   \n",
              "1149670  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K         32              420.0   \n",
              "\n",
              "         num_txs_as receiver  first_block_appeared_in  last_block_appeared_in  \\\n",
              "1149250                  1.0                 435559.0                453704.0   \n",
              "1149251                  1.0                 435559.0                453704.0   \n",
              "1149252                  1.0                 435559.0                453704.0   \n",
              "1149253                  1.0                 435559.0                453704.0   \n",
              "1149254                  1.0                 435559.0                453704.0   \n",
              "...                      ...                      ...                     ...   \n",
              "1149666                  1.0                 435559.0                453704.0   \n",
              "1149667                  1.0                 435559.0                453704.0   \n",
              "1149668                  1.0                 435559.0                453704.0   \n",
              "1149669                  1.0                 435559.0                453704.0   \n",
              "1149670                  1.0                 435559.0                453704.0   \n",
              "\n",
              "         lifetime_in_blocks  total_txs  first_sent_block  \\\n",
              "1149250             18145.0      421.0          435559.0   \n",
              "1149251             18145.0      421.0          435559.0   \n",
              "1149252             18145.0      421.0          435559.0   \n",
              "1149253             18145.0      421.0          435559.0   \n",
              "1149254             18145.0      421.0          435559.0   \n",
              "...                     ...        ...               ...   \n",
              "1149666             18145.0      421.0          435559.0   \n",
              "1149667             18145.0      421.0          435559.0   \n",
              "1149668             18145.0      421.0          435559.0   \n",
              "1149669             18145.0      421.0          435559.0   \n",
              "1149670             18145.0      421.0          435559.0   \n",
              "\n",
              "         first_received_block  ...  blocks_btwn_output_txs_min  \\\n",
              "1149250              451682.0  ...                         0.0   \n",
              "1149251              451682.0  ...                         0.0   \n",
              "1149252              451682.0  ...                         0.0   \n",
              "1149253              451682.0  ...                         0.0   \n",
              "1149254              451682.0  ...                         0.0   \n",
              "...                       ...  ...                         ...   \n",
              "1149666              451682.0  ...                         0.0   \n",
              "1149667              451682.0  ...                         0.0   \n",
              "1149668              451682.0  ...                         0.0   \n",
              "1149669              451682.0  ...                         0.0   \n",
              "1149670              451682.0  ...                         0.0   \n",
              "\n",
              "         blocks_btwn_output_txs_max  blocks_btwn_output_txs_mean  \\\n",
              "1149250                         0.0                          0.0   \n",
              "1149251                         0.0                          0.0   \n",
              "1149252                         0.0                          0.0   \n",
              "1149253                         0.0                          0.0   \n",
              "1149254                         0.0                          0.0   \n",
              "...                             ...                          ...   \n",
              "1149666                         0.0                          0.0   \n",
              "1149667                         0.0                          0.0   \n",
              "1149668                         0.0                          0.0   \n",
              "1149669                         0.0                          0.0   \n",
              "1149670                         0.0                          0.0   \n",
              "\n",
              "         blocks_btwn_output_txs_median  num_addr_transacted_multiple  \\\n",
              "1149250                            0.0                          17.0   \n",
              "1149251                            0.0                          17.0   \n",
              "1149252                            0.0                          17.0   \n",
              "1149253                            0.0                          17.0   \n",
              "1149254                            0.0                          17.0   \n",
              "...                                ...                           ...   \n",
              "1149666                            0.0                          17.0   \n",
              "1149667                            0.0                          17.0   \n",
              "1149668                            0.0                          17.0   \n",
              "1149669                            0.0                          17.0   \n",
              "1149670                            0.0                          17.0   \n",
              "\n",
              "         transacted_w_address_total  transacted_w_address_min  \\\n",
              "1149250                       495.0                       1.0   \n",
              "1149251                       495.0                       1.0   \n",
              "1149252                       495.0                       1.0   \n",
              "1149253                       495.0                       1.0   \n",
              "1149254                       495.0                       1.0   \n",
              "...                             ...                       ...   \n",
              "1149666                       495.0                       1.0   \n",
              "1149667                       495.0                       1.0   \n",
              "1149668                       495.0                       1.0   \n",
              "1149669                       495.0                       1.0   \n",
              "1149670                       495.0                       1.0   \n",
              "\n",
              "         transacted_w_address_max  transacted_w_address_mean  \\\n",
              "1149250                       3.0                   1.046512   \n",
              "1149251                       3.0                   1.046512   \n",
              "1149252                       3.0                   1.046512   \n",
              "1149253                       3.0                   1.046512   \n",
              "1149254                       3.0                   1.046512   \n",
              "...                           ...                        ...   \n",
              "1149666                       3.0                   1.046512   \n",
              "1149667                       3.0                   1.046512   \n",
              "1149668                       3.0                   1.046512   \n",
              "1149669                       3.0                   1.046512   \n",
              "1149670                       3.0                   1.046512   \n",
              "\n",
              "         transacted_w_address_median  \n",
              "1149250                          1.0  \n",
              "1149251                          1.0  \n",
              "1149252                          1.0  \n",
              "1149253                          1.0  \n",
              "1149254                          1.0  \n",
              "...                              ...  \n",
              "1149666                          1.0  \n",
              "1149667                          1.0  \n",
              "1149668                          1.0  \n",
              "1149669                          1.0  \n",
              "1149670                          1.0  \n",
              "\n",
              "[421 rows x 57 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-2f201a3b-9a7a-41b3-9830-a75d1c614310\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>address</th>\n",
              "      <th>Time step</th>\n",
              "      <th>num_txs_as_sender</th>\n",
              "      <th>num_txs_as receiver</th>\n",
              "      <th>first_block_appeared_in</th>\n",
              "      <th>last_block_appeared_in</th>\n",
              "      <th>lifetime_in_blocks</th>\n",
              "      <th>total_txs</th>\n",
              "      <th>first_sent_block</th>\n",
              "      <th>first_received_block</th>\n",
              "      <th>...</th>\n",
              "      <th>blocks_btwn_output_txs_min</th>\n",
              "      <th>blocks_btwn_output_txs_max</th>\n",
              "      <th>blocks_btwn_output_txs_mean</th>\n",
              "      <th>blocks_btwn_output_txs_median</th>\n",
              "      <th>num_addr_transacted_multiple</th>\n",
              "      <th>transacted_w_address_total</th>\n",
              "      <th>transacted_w_address_min</th>\n",
              "      <th>transacted_w_address_max</th>\n",
              "      <th>transacted_w_address_mean</th>\n",
              "      <th>transacted_w_address_median</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>1149250</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>23</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149251</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>23</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149252</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>23</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149253</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>23</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149254</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>24</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149666</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>32</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149667</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>32</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149668</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>32</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149669</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>32</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1149670</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>32</td>\n",
              "      <td>420.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>453704.0</td>\n",
              "      <td>18145.0</td>\n",
              "      <td>421.0</td>\n",
              "      <td>435559.0</td>\n",
              "      <td>451682.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>17.0</td>\n",
              "      <td>495.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.046512</td>\n",
              "      <td>1.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>421 rows × 57 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2f201a3b-9a7a-41b3-9830-a75d1c614310')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-2f201a3b-9a7a-41b3-9830-a75d1c614310 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-2f201a3b-9a7a-41b3-9830-a75d1c614310');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 6
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "wallets_classes.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                   address  class\n",
              "745591  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K      1"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-c4d5eff0-a0ed-4804-a4b9-3defda4ff7a5\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>address</th>\n",
              "      <th>class</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>745591</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c4d5eff0-a0ed-4804-a4b9-3defda4ff7a5')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-c4d5eff0-a0ed-4804-a4b9-3defda4ff7a5 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-c4d5eff0-a0ed-4804-a4b9-3defda4ff7a5');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 6
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "AddrAddr_edgelist.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K0\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                              input_address  \\\n",
              "1317522  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1317523  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1317634  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1317635  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1317644  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "...                                     ...   \n",
              "1592119  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1592120  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1592121  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1592122  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "1592123  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   \n",
              "\n",
              "                             output_address  \n",
              "1317522  131fHSzsK1eQJp7bC94JVWZqJ2JcdR5UfS  \n",
              "1317523  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  \n",
              "1317634  1FCw4XNAP6xeWMF4o3RaNENguE9qFumgpn  \n",
              "1317635  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  \n",
              "1317644  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  \n",
              "...                                     ...  \n",
              "1592119  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  \n",
              "1592120  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  \n",
              "1592121  32ZkfqSGoxdx5UGo8YQp1tFhSv8R982Usk  \n",
              "1592122  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  \n",
              "1592123  1KVqB5L93xNQ387NkNZc6rkx4p4HaWpZa9  \n",
              "\n",
              "[915 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-b897a655-d488-4453-8490-eeed66b3abc0\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>input_address</th>\n",
              "      <th>output_address</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>1317522</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>131fHSzsK1eQJp7bC94JVWZqJ2JcdR5UfS</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1317523</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1317634</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>1FCw4XNAP6xeWMF4o3RaNENguE9qFumgpn</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1317635</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1317644</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1592119</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1592120</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1592121</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>32ZkfqSGoxdx5UGo8YQp1tFhSv8R982Usk</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1592122</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1592123</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>1KVqB5L93xNQ387NkNZc6rkx4p4HaWpZa9</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>915 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b897a655-d488-4453-8490-eeed66b3abc0')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-b897a655-d488-4453-8490-eeed66b3abc0 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-b897a655-d488-4453-8490-eeed66b3abc0');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 6
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "AddrTx_edgelist.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K0\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                             input_address       txId\n",
              "235194  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  291338524\n",
              "235250  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   88250674\n",
              "235255  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  331553508\n",
              "235256  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  331553509\n",
              "239085  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  289228146\n",
              "...                                    ...        ...\n",
              "298647  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  355110135\n",
              "298648  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  355110139\n",
              "298649  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  343635736\n",
              "298650  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K  355110144\n",
              "298651  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K   69064953\n",
              "\n",
              "[420 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-5ac14163-594a-46f3-895b-92a0f8d50223\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>input_address</th>\n",
              "      <th>txId</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>235194</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>291338524</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>235250</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>88250674</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>235255</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>331553508</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>235256</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>331553509</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>239085</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>289228146</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>298647</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>355110135</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>298648</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>355110139</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>298649</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>343635736</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>298650</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>355110144</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>298651</th>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "      <td>69064953</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>420 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-5ac14163-594a-46f3-895b-92a0f8d50223')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-5ac14163-594a-46f3-895b-92a0f8d50223 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-5ac14163-594a-46f3-895b-92a0f8d50223');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 6
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "TxAddr_edgelist.csv for address = 39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K0\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "             txId                      output_address\n",
              "431088  291338524  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "431200   88250674  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "431209  331553508  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "431212  331553509  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "436269  289228146  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "...           ...                                 ...\n",
              "539069  355110135  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "539071  355110139  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "539073  343635736  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "539074  355110144  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "539076   69064953  39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K\n",
              "\n",
              "[421 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-3bf84449-5f74-4e0f-b362-27653c819b48\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>txId</th>\n",
              "      <th>output_address</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>431088</th>\n",
              "      <td>291338524</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>431200</th>\n",
              "      <td>88250674</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>431209</th>\n",
              "      <td>331553508</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>431212</th>\n",
              "      <td>331553509</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>436269</th>\n",
              "      <td>289228146</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>539069</th>\n",
              "      <td>355110135</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>539071</th>\n",
              "      <td>355110139</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>539073</th>\n",
              "      <td>343635736</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>539074</th>\n",
              "      <td>355110144</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>539076</th>\n",
              "      <td>69064953</td>\n",
              "      <td>39sfuA8pY4UfybgEZi7uvA13jkGzZpsg5K</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>421 rows × 2 columns</p>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3bf84449-5f74-4e0f-b362-27653c819b48')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-3bf84449-5f74-4e0f-b362-27653c819b48 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-3bf84449-5f74-4e0f-b362-27653c819b48');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "\n",
        "Actors features --- class, 28 transaction-related features, 27 time-related features:\n",
        "\n",
        "![actors_features.png]()\n"
      ],
      "metadata": {
        "id": "moS6bxoLg1Pk"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "df_wallets_features.columns"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RpljxgT7k49T",
        "outputId": "ee920f81-831e-411b-e840-5aaae0c6e018"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Index(['address', 'Time step', 'num_txs_as_sender', 'num_txs_as receiver',\n",
              "       'first_block_appeared_in', 'last_block_appeared_in',\n",
              "       'lifetime_in_blocks', 'total_txs', 'first_sent_block',\n",
              "       'first_received_block', 'num_timesteps_appeared_in',\n",
              "       'btc_transacted_total', 'btc_transacted_min', 'btc_transacted_max',\n",
              "       'btc_transacted_mean', 'btc_transacted_median', 'btc_sent_total',\n",
              "       'btc_sent_min', 'btc_sent_max', 'btc_sent_mean', 'btc_sent_median',\n",
              "       'btc_received_total', 'btc_received_min', 'btc_received_max',\n",
              "       'btc_received_mean', 'btc_received_median', 'fees_total', 'fees_min',\n",
              "       'fees_max', 'fees_mean', 'fees_median', 'fees_as_share_total',\n",
              "       'fees_as_share_min', 'fees_as_share_max', 'fees_as_share_mean',\n",
              "       'fees_as_share_median', 'blocks_btwn_txs_total', 'blocks_btwn_txs_min',\n",
              "       'blocks_btwn_txs_max', 'blocks_btwn_txs_mean', 'blocks_btwn_txs_median',\n",
              "       'blocks_btwn_input_txs_total', 'blocks_btwn_input_txs_min',\n",
              "       'blocks_btwn_input_txs_max', 'blocks_btwn_input_txs_mean',\n",
              "       'blocks_btwn_input_txs_median', 'blocks_btwn_output_txs_total',\n",
              "       'blocks_btwn_output_txs_min', 'blocks_btwn_output_txs_max',\n",
              "       'blocks_btwn_output_txs_mean', 'blocks_btwn_output_txs_median',\n",
              "       'num_addr_transacted_multiple', 'transacted_w_address_total',\n",
              "       'transacted_w_address_min', 'transacted_w_address_max',\n",
              "       'transacted_w_address_mean', 'transacted_w_address_median'],\n",
              "      dtype='object')"
            ]
          },
          "metadata": {},
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "LLgHsC-abwGa"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Feature Analysis\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "This section analyzes features using scikit learn feature importances, permutation feature importance, and drop column feature importance."
      ],
      "metadata": {
        "id": "0p7g5U6R3xGp"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "RF.feature_importances_:"
      ],
      "metadata": {
        "id": "7WQUMNaB4FrF"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "imp_df = pd.DataFrame({\n",
        "    \"Feature\": X_train.columns,\n",
        "    \"Imp\": cRF.feature_importances_\n",
        "})\n",
        "imp_df.sort_values(by=\"Imp\", ascending=False)\n",
        "imp_df_sorted = imp_df.sort_values(by=\"Imp\", ascending=False)\n",
        "imp_df_sorted"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "4ed68ead-0e4b-4702-d07d-106835b882cf",
        "id": "3jQTFSfTrAfF"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                          Feature       Imp\n",
              "50     transacted_w_address_total  0.097278\n",
              "6                first_sent_block  0.064506\n",
              "28                    fees_median  0.054235\n",
              "26                       fees_max  0.053693\n",
              "27                      fees_mean  0.053543\n",
              "3          last_block_appeared_in  0.051993\n",
              "2         first_block_appeared_in  0.050069\n",
              "25                       fees_min  0.049734\n",
              "24                     fees_total  0.046314\n",
              "7            first_received_block  0.038914\n",
              "33           fees_as_share_median  0.035934\n",
              "31              fees_as_share_max  0.034104\n",
              "34          blocks_btwn_txs_total  0.030284\n",
              "32             fees_as_share_mean  0.028441\n",
              "29            fees_as_share_total  0.022405\n",
              "36            blocks_btwn_txs_max  0.021734\n",
              "30              fees_as_share_min  0.020092\n",
              "4              lifetime_in_blocks  0.020001\n",
              "38         blocks_btwn_txs_median  0.019430\n",
              "37           blocks_btwn_txs_mean  0.018780\n",
              "12            btc_transacted_mean  0.014043\n",
              "5                       total_txs  0.013247\n",
              "13          btc_transacted_median  0.011907\n",
              "11             btc_transacted_max  0.011466\n",
              "10             btc_transacted_min  0.011023\n",
              "35            blocks_btwn_txs_min  0.009759\n",
              "9            btc_transacted_total  0.009711\n",
              "18                btc_sent_median  0.009456\n",
              "16                   btc_sent_max  0.009189\n",
              "14                 btc_sent_total  0.009108\n",
              "17                  btc_sent_mean  0.008770\n",
              "1             num_txs_as receiver  0.008744\n",
              "21               btc_received_max  0.008215\n",
              "22              btc_received_mean  0.007875\n",
              "23            btc_received_median  0.007250\n",
              "19             btc_received_total  0.006408\n",
              "15                   btc_sent_min  0.004949\n",
              "8       num_timesteps_appeared_in  0.003812\n",
              "48  blocks_btwn_output_txs_median  0.003410\n",
              "0               num_txs_as_sender  0.003354\n",
              "20               btc_received_min  0.002909\n",
              "44   blocks_btwn_output_txs_total  0.002188\n",
              "46     blocks_btwn_output_txs_max  0.001908\n",
              "41      blocks_btwn_input_txs_max  0.001395\n",
              "49   num_addr_transacted_multiple  0.001356\n",
              "42     blocks_btwn_input_txs_mean  0.001078\n",
              "53      transacted_w_address_mean  0.001057\n",
              "47    blocks_btwn_output_txs_mean  0.000919\n",
              "39    blocks_btwn_input_txs_total  0.000910\n",
              "52       transacted_w_address_max  0.000777\n",
              "43   blocks_btwn_input_txs_median  0.000750\n",
              "40      blocks_btwn_input_txs_min  0.000686\n",
              "45     blocks_btwn_output_txs_min  0.000658\n",
              "51       transacted_w_address_min  0.000116\n",
              "54    transacted_w_address_median  0.000114"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-d1c180c1-8534-43f9-a6a8-e42e66d96a04\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Feature</th>\n",
              "      <th>Imp</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>50</th>\n",
              "      <td>transacted_w_address_total</td>\n",
              "      <td>0.097278</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>first_sent_block</td>\n",
              "      <td>0.064506</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>fees_median</td>\n",
              "      <td>0.054235</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>fees_max</td>\n",
              "      <td>0.053693</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>fees_mean</td>\n",
              "      <td>0.053543</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>last_block_appeared_in</td>\n",
              "      <td>0.051993</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>first_block_appeared_in</td>\n",
              "      <td>0.050069</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>fees_min</td>\n",
              "      <td>0.049734</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>fees_total</td>\n",
              "      <td>0.046314</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>first_received_block</td>\n",
              "      <td>0.038914</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>33</th>\n",
              "      <td>fees_as_share_median</td>\n",
              "      <td>0.035934</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>31</th>\n",
              "      <td>fees_as_share_max</td>\n",
              "      <td>0.034104</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>34</th>\n",
              "      <td>blocks_btwn_txs_total</td>\n",
              "      <td>0.030284</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>32</th>\n",
              "      <td>fees_as_share_mean</td>\n",
              "      <td>0.028441</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>fees_as_share_total</td>\n",
              "      <td>0.022405</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>36</th>\n",
              "      <td>blocks_btwn_txs_max</td>\n",
              "      <td>0.021734</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>30</th>\n",
              "      <td>fees_as_share_min</td>\n",
              "      <td>0.020092</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>lifetime_in_blocks</td>\n",
              "      <td>0.020001</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>38</th>\n",
              "      <td>blocks_btwn_txs_median</td>\n",
              "      <td>0.019430</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>37</th>\n",
              "      <td>blocks_btwn_txs_mean</td>\n",
              "      <td>0.018780</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>btc_transacted_mean</td>\n",
              "      <td>0.014043</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>total_txs</td>\n",
              "      <td>0.013247</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>btc_transacted_median</td>\n",
              "      <td>0.011907</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>btc_transacted_max</td>\n",
              "      <td>0.011466</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>btc_transacted_min</td>\n",
              "      <td>0.011023</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>35</th>\n",
              "      <td>blocks_btwn_txs_min</td>\n",
              "      <td>0.009759</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>btc_transacted_total</td>\n",
              "      <td>0.009711</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>btc_sent_median</td>\n",
              "      <td>0.009456</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>btc_sent_max</td>\n",
              "      <td>0.009189</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>btc_sent_total</td>\n",
              "      <td>0.009108</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>btc_sent_mean</td>\n",
              "      <td>0.008770</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>num_txs_as receiver</td>\n",
              "      <td>0.008744</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>btc_received_max</td>\n",
              "      <td>0.008215</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>btc_received_mean</td>\n",
              "      <td>0.007875</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>btc_received_median</td>\n",
              "      <td>0.007250</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>btc_received_total</td>\n",
              "      <td>0.006408</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>btc_sent_min</td>\n",
              "      <td>0.004949</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>num_timesteps_appeared_in</td>\n",
              "      <td>0.003812</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>48</th>\n",
              "      <td>blocks_btwn_output_txs_median</td>\n",
              "      <td>0.003410</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>num_txs_as_sender</td>\n",
              "      <td>0.003354</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>btc_received_min</td>\n",
              "      <td>0.002909</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>44</th>\n",
              "      <td>blocks_btwn_output_txs_total</td>\n",
              "      <td>0.002188</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>46</th>\n",
              "      <td>blocks_btwn_output_txs_max</td>\n",
              "      <td>0.001908</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>41</th>\n",
              "      <td>blocks_btwn_input_txs_max</td>\n",
              "      <td>0.001395</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>49</th>\n",
              "      <td>num_addr_transacted_multiple</td>\n",
              "      <td>0.001356</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>42</th>\n",
              "      <td>blocks_btwn_input_txs_mean</td>\n",
              "      <td>0.001078</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>53</th>\n",
              "      <td>transacted_w_address_mean</td>\n",
              "      <td>0.001057</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>47</th>\n",
              "      <td>blocks_btwn_output_txs_mean</td>\n",
              "      <td>0.000919</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>39</th>\n",
              "      <td>blocks_btwn_input_txs_total</td>\n",
              "      <td>0.000910</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>52</th>\n",
              "      <td>transacted_w_address_max</td>\n",
              "      <td>0.000777</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>43</th>\n",
              "      <td>blocks_btwn_input_txs_median</td>\n",
              "      <td>0.000750</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>40</th>\n",
              "      <td>blocks_btwn_input_txs_min</td>\n",
              "      <td>0.000686</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>45</th>\n",
              "      <td>blocks_btwn_output_txs_min</td>\n",
              "      <td>0.000658</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>51</th>\n",
              "      <td>transacted_w_address_min</td>\n",
              "      <td>0.000116</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>54</th>\n",
              "      <td>transacted_w_address_median</td>\n",
              "      <td>0.000114</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d1c180c1-8534-43f9-a6a8-e42e66d96a04')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-d1c180c1-8534-43f9-a6a8-e42e66d96a04 button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-d1c180c1-8534-43f9-a6a8-e42e66d96a04');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Top 20 and Bottom 20 features:"
      ],
      "metadata": {
        "id": "HVr3R3weNb7a"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# top 20 features\n",
        "plt.figure(figsize=(10,10))\n",
        "imp_df_sorted[:20].iloc[::-1].plot(kind='barh',y='Imp',x='Feature',color='r')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 301
        },
        "id": "UH5bfZGVQN8K",
        "outputId": "a0bc3381-0336-4c62-dce5-22990052d613"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<Figure size 720x720 with 0 Axes>"
            ]
          },
          "metadata": {},
          "execution_count": 142
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2ab1e1af40>"
            ]
          },
          "metadata": {},
          "execution_count": 142
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 720x720 with 0 Axes>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# bottom 20 features\n",
        "plt.figure(figsize=(10,10))\n",
        "imp_df_sorted[35:].iloc[::-1].plot(kind='barh',y='Imp',x='Feature',color='r')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 301
        },
        "id": "fRkAJqL1MoYD",
        "outputId": "dcb9cb8c-39e8-449f-d977-e2654778e689"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<Figure size 720x720 with 0 Axes>"
            ]
          },
          "metadata": {},
          "execution_count": 143
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7f2acd8b5bb0>"
            ]
          },
          "metadata": {},
          "execution_count": 143
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 720x720 with 0 Axes>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhMAAAD4CAYAAABWv2RMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9eZxcZZm3f33ZA8GgSQZBlo6IoASIpEFZjYK4swwgwyITFDQOi8IPBwRFVFQQXx0QAYE3RCECsmNAIQMJCYFANrIRFodE4AUFGUWQXe7fH/dd9Onqquqq7qr0kvv6fM6nTz31bOdUJeepZ7kemRlJkiRJkiQ9ZbW+rkCSJEmSJAObbEwkSZIkSdIrsjGRJEmSJEmvyMZEkiRJkiS9IhsTSZIkSZL0ijX6ugJJ0heMGDHC2tra+roaSZIkA4p58+b9xcxGlodnYyJZJWlra2Pu3Ll9XY0kSZIBhaQ/VgrPYY4kSZIkSXpF9kwkqybz5oHU17VIkiRZubRIVJk9EysZSW2SllQI/5qkdfuiTpWQdKmk9zchn/GSzq/x/n71lBP5bFxHvEmSDmy0nkmSJEnPycZE/+FrQK8aE5Ka1tNkZkeZ2YPNyq8G+wH1NFrGA902JpIkSZKVTzYm+oY1JE2WtEzStZKOxx+U0yRNA5D0CUnzJS2UdEe1jCSdIelySbOAyyWNlHSdpDlx7Brxhkq6TNJiSYskHRDhe0u6N8q6RtLQCJ8uqV3SBEnnFMp7q6dB0uGS7pf0gKRfSFo9wo+U9Iik+4Fda9R9F2Af4JzIYwtJYyTNjjreIOnt0dPQDkyOeEMknR7Xt0TSxVL3YxaSviRprqS5z3YXOUmSJKkfM8tjJR5AG2DArvF6InASsAIYEWEjgSeAUfH6HTXyOwOYBwyJ178GdovzzYBlcX428F+FdG8HRgAzgPUi7GTg9Difjj/ARwJ/KKT7HbAb8D7gt8CaEX4BcASwEfB4pFsLmAWcX6P+k4ADC68XAR+O8++W6lyqTyHeOwrnlwOfrZRftWOsjxzmkUceeaxaRy8B5lb6PzUnYPYNT5jZrDi/Aji+7P0PATPMbDmAmf1vN/ndbGYvx/lewPsLP9TfFr0NewH/Vgo0s79K+gw+xDAr4q8F3FvM2MyelfSYpA8BjwJb4w2EY4CxwJxIOwR4BvggMN3MngWQdDXw3m7qT8QdBmxgZndF0C+Ba6pE/4ik/8SHht4BLMUbN0mSJMlKJhsTfYN187pR/lE4Xw34kJm9UoxQZRRAwFQzO6Sb/K8CPgc8BNxgZhbDCr80s2+UlbNfo5VvFEnr4D0h7Wb2hKQzgHUaymTsWEjPRJIkSVPIORN9w2aSdo7zQ4G7gReA9SNsNrCHpFEAkt7RQN63A8eVXkgaE6dT8d6EUvjbo5xdJb0nwtaTVKkX4QZgX+AQvGEBcAdwoKR/KdVR0ubAfcCHJQ2XtCZwUDf1feu6zex54K+Sdo/3Pg/cVR6PjobDX6LXJVdvJEmS9CHZmOgbHgaOkbQMn7twIXAx8HtJ02KI4EvA9ZIWAlc3kPfxQHtMYHwQmBDhZwJvjwmLC4GPRDnjgSslLcKHOLYuz9DM/gosAzY3s/sj7EHgm8DtkXYqsJGZPY3P47gXHw5Z1k19rwK+LmmBpC2Af8cnZC4CxuDzJsDnQlwk6QHgVeASYAlwGzCngfuTJEmSNBnFpLUkWaVob2+31GknSZI0hqR5ZtZeHp49E0mSJEmS9IqcgDlAkHQk8NWy4FlmdkyFuG3AFDMbXRb+NeBiM3upVfWshqTTgC8DfwfeiOBrzOz7PchrY+A8M+v5XInUaSfJ4CN72vuMHOYYhNRoTKzAV0D8pQ+qhaTpwElm1ufjC+1S31ciSZLmks+zlpPDHKsezbRsfjjMkw/ERMn1I/zrYaFcJOk7EdYWZV4iaamk28NY2cViWaWsFZJ+GHHmStpB0m2S/kfShEIZS+J8vKTrJf1e0qOSftTMm5gkSZJ0TzYmBi9bAReY2fvwoYW1gKfwVRwfkTQSXxFxgJltT+0lnCcBx5jZGGB34GVJewNbAjvhqy7GStoj4m8J/NzMtgH+FmVcC8wFDjOzMQXJViUej7JmEkZLXOT1nSrxxwAHA9sCB0vatFKk1GknSZK0hmxMDF7KLZu7lb3fiGVzFvCT6N3YwMzeAPaOYwEwH19SumXEX25mD8T5PFwh3gg3x9/FwH1m9kIsY31V0gYV4t9hZs+HqOtBYPNKmZrZxWbWbmbtIxusUJIkSVKdnIA5eGmaZdPMzpJ0C/ApXL39cdye+UMz+0UxbszXeLUQ9E9ctd0IpfRvluX1JpW/s+Xldf+9TgNmkiRJ08ieicFL0yybkrYws8VmdjYuiNoal0V9QR27jL6rZMOsQbH8JEmSZJCQPRODl5JlcyLe9X8h8Bpu2Xwq5k2ULJur4Zt0faxKXl+T9BG8Z2Ap8Dsze1XS+4B7Y9+PF4HD8Z6BakzCLZYvAzt3M28iSZIkGSDk0tBklSQNmEmSJI2TS0OTJEmSJGkJOcyRvEUjls0mlHUDMKos+GQzu63ZZSVJkiStJYc5CkgaD9xuZk/F60uBn8QOma0o71Qz+0Er8h7oSHrRzIZWea/XOu00YCarHPl/fdIEcpijPsbjlkgAzOyoVjUkglNbmHe/Q1JTesLM7Kle7cuRJEmSNJV+35iooWeeLqk94oyIfSdKeuUbJU0NNfOxkk4MDfTsaksgK+mey8p4UdI5UYf/lrRTvP+YpH0izuoRp6SY/nKEbyRpRuS7RNLuks4ChkTY5Ih3uKT7I+wXklYvlP3TKPuOsFci6XhJD0ZZV9W4hztJujfuwT2Stircq5viOh6V9O3CPX9InXXc68Z7YyXdJWleaK43ivCj47oXSrquEH+SpIsk3Qf8SNIWcvX1PEkzJW0d8UZFHRdLOrOO70TqtJMkSfoLZtavD9ye+AYwJl7/Bl+COB3ftApgBLAizscDf8B9BiOB54EJ8d5Pga/VKOutPMtf49KnT8b5DcDtwJrA9sADEf4l4Jtxvjaujx4F/H/AaRG+OrB+nL9YKOt9wG+BNeP1BcARhbIPi/PTgfPj/Clg7TjfoMZ1vQ1YI873Aq4r3KungeG4WGoJ3qBqizJ3jXgTcaX2msA9wMgIPxiYGOfDC+WdCRwX55OAKcDq8foOYMs4/yBwZ5zfXLjeY4r3psp3YknhGh4DhgHrAH8ENq2S7kvxmczdzDt988hj1TmSpAkAc826/v86UCZgLrfG9MzTzOwF4AVJz+MPaXA983Y9rMNrwO8L+bxqZq9LWlyoz97AdtHLAf6A2xIXPU2UtCZwY+FaiuwJjAXmhLdhCO5+APc7XB3nVwDXx/kivCflRuDGGnUfBvxS0paA4Y2CElPN7DkASdfj2u0b6arjPj6ufzQwNeq4Ot4YARgdPQobAENxqVWJa8zsn3LB1S7ANerY/nvt+LsrcECcXw6cXeN6yrnDzJ6PayjptJ8oj2RmFwMXg8+ZaCD/JEmSpAYDpTFRSc/8Bh3DNOvUiF9UMlfTMdfD69Eq65Snmb1ZmAsg/Bd5lxUJ8k2wPg1MkvQTM/tVeRTgl2b2jTrqUqrHp4E9gM8Cp0na1nzfjHK+hzew9pfrrqdXyKv8daVwAUvNbGe6MgnYz8wWyieyjiu894/4uxrwN/NNvCrR0wd86rSTJEn6kH4/Z6IGK/Bf8uC7SjaD3uqebwO+Ej0QSHqvpPUkbQ782cwuAS4Fdoj4r5fi4t3/ByqU1JLeEenAP6fSNR4K3C23Vm5qZtOAk/Heh4qrH+K9/xfn48ve+1iUNQTYD9/UCyrruB8GRpbCJa0paZuIsz7wdFzPYZUqYWZ/B5ZLOijSS9L28fYs4N/ivGL6JEmSpH8ykBsTP8Yf3AvwORPNYBKue34gHq6Ncimurp4fEwR/gf9KHgcsjLoeDJwb8S8GFkmabL5q5JvA7ZIWAVOBjSLeP4CdIs+PAt/FhxiuiGGWBfhSyb9VqdePgB9G+eW/2u8HrsOHTK4ze2vFZEnHvQx4O3Chmb2GN2rOlrQQeAAftgD4FnAf3ih4qMY9Ogz4YqRfCuwb4V+N8hYD76qRPkmSJOlnpGdiAKAazoVe5jsen2B6bFl4GzDFzEY3u8z+Quq0kyRJGkfpmUiSJEmSpBUMlAmYTUXSz/HVA0XONbPL+qI+3VFvr4Qa1GGb2SR8aKc8fAW+aqNPkbQtvrKjyKtm9sG+qE+SJElSmZYNc1TrKpc0HTipMDZfb35n4O6BH/ewPhXTRz13MbNf9yTfZiNpHPCamd3TizxqarolbQAcamYX9LSMVlL8jki6Fa9rtfkgPSJ12km/J4egk35IDnNUpw1frdBfGEfHpMae0p2mewPgP3pZxkrBzD7V7IZEkiRJ0lxa3ZhYo5KSuYSkQ0KfvETS2YXwT0iaH2rmO8ozDXXz7+TK67qU0sH2oWx+VNLREXYWsHus4DhB0i2StotyFkg6Pc6/G+WOk+unr1WHclrVCpS0Z+SzWNJESWtH+ApJI+K8PfJsAyYAJ0R9dleHjnqupEckfSbSjJd0fqGcKVG3LpruCpwFbBFxzpG0v1zTLbn6+xFJ75S0jTr03ovk0qtK11jSb0+KtJMl7SVpVtzrnSLeenEP7o97sm+ED5F0VXxPbsA9IqW8i/fpRrmGe6mkLxXivCjp+/F9mS1pwyr1/FLcx7nPVvvAkiRJksappMVsxkF1JfN0XNm8MfA4rrxeA7gT9xyMxO2FoyLdO+LvGZH+WOAmOjTS9SqlzwAW4g+qEVHGxnhPwJRCvFNwnfMw3Fx5W4RPA7aK+M8Dm+CNsXuB3aqUuU6U8954/StC5417MkbEeTswvXidhTwm4ebJ1XCb5pOR73hCqx3xpgDj4ryqirrw2SwpC7si7u0U4JAI+xkdGu+1gCE18nsD2DbqOS8+b+FLP2+MeD8ADi99VsAjwHrAiXRoubeLvNor3KfSd6Gk/h4erw34bJz/iFCa1zrG9rXaOI88ujuSpB9CFZ12q3smypXMuxXe2xF/gD5rbm2cjNscPwTMMLPlAGb2v4U0RwCfBA40s5L1sKSUPhx/CNXiJjN72cz+gjcOdqoQZ2bUY1fgFmBo9KiMMrOHI879Zvakmb2JuxbaqpS3Fa4CfyRe/zLybpTfmNmbZvYovg/F1j3IozuOA76BT3C8MsLuBU6VdDKwuZm9XCP9cjNbHPdkKa64Nlw93hZx9gZOkfQA3qhcB9gMvydXAJjZIvwzrcTxcj/FbGBTvHEFrjqfEuf16NaTJEmSJtLq1RzWzetGWQyMwXsFlkdYvUrpeuszB+8peAwXR40AjsYfUiUa1zd3pZYOvJxK9S6mryeP7tgE14RvKGm1aLz8Wr7b56eBWyV92czurJK+HoW5gAMKjTIPrD5KVIwzDt+kbGczeykmaZauuag6T512kiTJSqbVPROVlMwl7gc+LN8+fHXgEOAu/FfnHpJGgWulC2kWAF8Gbpa0sRpTSgPsK2kdScPx4Yo5lCm0zS2PTwAH4b/MZ+LDKzN6cP0PA22S3hOvPx/XCJ114AcU0lRSeh8kaTVJWwDvjnxXAGMifFM697IUNd2V6FSGfG+RifhnsAwfdkDSu4HHzOw8fGipp5uklbgNOK40x0TSByJ8BjEJVtLoKuUMA/4aDYmt8R6sJEmSpB/Q6sZEFyVz6Q0zexqfnzANn8swz8xuMrNn8a2ir48u7auLGZrZ3fjD/RZ86+x6ldLg3efT8AbL98zsqQj7Z0zeOyHizQSeiW79mfiv9pmNXryZvQIcie+SuRj/lX5RvP0d4FxJc/Ff0yV+C+xfmoAZYY/jja/f4dupv4Jrq5fj+u7zgPmFPN7SdFep13PALPnE13Pw1R8z496eCBwl6X3A54AlMSwxGp/z0Ru+h+9YukjS0ngN/r0YGt+T79K5F6jE7/EJvcvwCaSze1mXJEmSpEmkTrufI2kSPkH02r6uy2AiddpJkiSNo/RMJEmSJEnSCgadTlsNKqWbWO4NwKiy4JPN7Lbe5Gtm43tRp+H41ubl7BlDHX2aX5IkSTI4yGGOAY5858/bY/7HoEVN3jk1ddpJvyX/T076MTnMMXgZj8u3kiBMnvndTpIkWUnkf7gtIPTSyyRdEurn20MZPV1Se8QZIWlFnI8PVfTU0EcfK+nEUE7PLlseWyznQNyJMTlWfwyT9LCkreL9K+UK8NVDdb1ErvU+oVJ+keZoSXNidct1IexC0kGRfqGkqstkVUXBLenwQvgvYjlwVRW2pFFy9fliSWeWlfH1qOMiSd8p3POHJf0Kt2NuWqFuqdNOkiRpAdmYaB1bAj83s22Av9HZJVGJ0cC/4mbQ7wMvmdkHcNfFEZUSxAqPubjyeoyZPY8rsSdJ+jfg7WZ2CS76epeZjTazbYHLatTjejPb0cy2x50TX4zw04GPR/g+NdJPwLdzH4M3dJ6MZaYH42r1MfhS2MMi/nrA7Mh3Bi4IAzgXuDDq+3Qpc0l74/d2p7iusZJKVtEtgQvMbBsz+2OF+3WxmbWbWfvIGheQJEmSNEY2JlrHcjN7IM7rUTxPM7MXwrPxPO6bgM466m4xs6mR5ufAURH8GPBuST+T9Ang7zWyGC1pZngxDgO2ifBZeCPlaGD1GukrKbj3xAVdc8JZsScu34LqKuxdgZLW+/JC/nvHsQB3a2xNh1b7j2aW/okkSZKVzKBbzdGPKFduD6G2QrseHXW3xFyB9wEv4aKwJ83sr5K2Bz6O9xx8DvhClSwmAfuZ2cKY3DkOwMwmSPogrtaeJ2lspRUclRTcuEb7l2b2jQrl1VJhV5qJJuCHZvaLsutuA/5R5Zq6kjrtJEmSppE9EyuXFXQotA9sUp7l+u0T8OGJQ4HLJK0p38J7NTO7DvgmsEON/NYHnpbruEtDEUjawszuM7PTgWepMCch4lVScN8BHCjpXyLOOyRt3s11zQL+Lc4PK4TfBnxB0tDI612lfJMkSZK+IXsmVi4/Bn4j6Uu4DrwZTAIukvQy8O/40MZOZvZCTJT8JnA93rAoNR4r9RCU+BZwH95guI+Ohso5MZlSeONgYZX0nwM+L+l14E/AD8zsfyV9E7g96vA6vs17l3kNBb4K/DqGS24qBZrZ7TEH4175Fh8vAofTWUmeJEmSrETSM5GskqROO0mSpHHSM5EkSZIkSUvIYY4BgqSf4yscipxrZrWWebYsP0kfB84uC15uZvv3pD4rnXnzwIdJkqRxskc3STqRwxx9TKxCmGJmo8vCvwZcbGYv9UW9ypF0KfATM3uwl/mMB9rN7Nhe5nMrcGg3W85XJXXaSa/I/zeTVZQc5hh4fA1YtzcZSGpaz5OZHdXbhkQzMbNP9bQhkSRJkjSXbEz0D9aQNDkU3NdKOh7fb2OapGkAkj4haX5opyvt3EnEO0PS5ZJmAZdLGhla7Dlx7Brxhkq6LHTViyQdEOF7h8Z6vqRrCkswp0tqlzRB0jmF8sZLOj/Oqymzj5T0iKT76Tq0Ul7/SZIuDLX2Y5LGSZoY92ZSId4KuZK8orq8St6p006SJGkB2ZjoH2yFa6Dfh9sp1wKeAj5iZh+RNBK4BDggtNMHdZPf+4G9zOwQXEv9UzPbEVd6XxpxvgU8b2bbmtl2wJ3ho/hmpN0BV3WfWJb3dUBxXsTBwFXVlNmSNgK+gzcidou6dcfbgZ1xZ8bNwE9xE+e2ksZUiF+Xujx12kmSJK0hJ2D2D54ws1lxfgVwfNn7HwJmmNlyADP7327yuzk01gB7Ae9Xx2TDt0Vvw150SKEIS+Zn8If9rIi/Fq7HphDv2egx+BDwKK6znoV7I0rKbHDj5zPAB4HpoQlH0tXAe7up/2/NzELp/WczWxxpl+K67QfK4jeqLk+SJEmaSDYm+gfls7l6O7urqJVeDfiQmb1SjKDKKxkETI0ejVpchcupHgJuiAd/RWW2pP0arTydVeLlmvFK39lK6vLapE47SZKkaeQwR/9gM0k7x/mhwN101mTPBvaQNApcR91A3rcDx5VeFIYJpuK9CaXwt0c5u0p6T4StJ6lSL8INwL7AIXjDAqors+8DPixpeCi6uxuiSZIkSQYY2ZjoHzwMHCNpGT5f4ELgYuD3kqbFEMGXgOslLQSubiDv44H2mGT5IL7RF8CZwNslLYk8PxLljAeulLQIH+LYujxDM/srvv/H5mZ2f4Q9iM+3uD3STgU2MrOngTMir1mRLkmSJBlEpGciWSVJnXaSJEnjpGciSZIkSZKWkBMwByiSjsR31iwyy8yOqRS/vyHpNLrOn7jGzL6/UiqQOu2BR/aiJkm/pV/2TISIaEmF8OmSunSv1JHfGZJO6kV9KqaPeh7a03x7g5ldZmZjigdwjaRdepOvpFO7eX8DSf/RmzIAzOz7UedxuDZ8TK2GRL33utp3J0mSJGkd/bIxMYBow1df9BfGAb1qTAA1GxPABkCvGxM9yK+N/nWvkyRJkqA/NybKFdOd9qmQdEiooJdIOrsQXlM7LeloSb+TNETS8ZIejJUOV5XHLWP70Ew/KunoCDsL2D300SdIukXSdlHOAkmnx/l3o9xx0btyraSH4vqq9rVL2jPyWRxK6bUjfEXYKpErrqfLNwybAJwQ9dldrqa+KBTSj4SUqpMCO15PibqdBQyJ9JOrVOssYIuIc46k/SXdIWejKOedkrZRh1p7kaQt68xP8XdJXPfBVe51m6SZ8VnPr6dHRqnTTpIkaQ1m1u8O/Feo4WpmgInAScB0oB3ft+JxYCQ+7+NOYL94/QQwKtK9I/6eEemPBW4C1o7wpwrnG9SozxnAQlyGNCLK2BjvCZhSiHcK7m4YBswBbovwabgyexzwPLAJ3pC7F9itSpnrRDnvjde/Ar4W5yuAEXHejhsm37rOQh6TgN9HWVsCT0a+44HzC/GmAOPi/MU6PpslZWFXxL2dAhwSYT8DDovztYAh9eSHq7CnAqsDG8bnvFGFe70usE6cbwnMrVa/SsdYH4HPYyAdSZL0OaX/a8uP/twzUa6Y3q3w3o6EotnM3gAmA3tQWzt9BPBJ4EAzKxkTFwGTJR0OvNFNfW4ys5fN7C9442CnCnFmRj12BW4BhkaPyigzezji3G9mT5rZm7gWuq1KeVvhmuhH4vUvI+9G+Y2ZvWlmjwKPUcEb0QSOA74BvGpmV0bYvcCpkk7GfRQvV03dmd2AK83sn2b2Z+Au/PMuZ03gErly+xrq2/MjSZIkaQH9uTFh3bxulMX4g3uTQtingZ8DO+B7StRa3VJPfebgPQW7AzOABcDR+H4RJcrVzz1ZUfMGHZ/dOt3ErVTvYvp68uiOTXDV9YaSVgMws18D+wAvA7dK+mgvyyjnBODPwPb4PV+rodRjs29iwB1JkvRb+nNjopJiusT9uKJ5hHyb60PwX7C1tNMLgC8DN0vaOB56m5rZNOBkfGhiaI367CtpHUnD8S73OXRWXmNmr+FDEwfhv8xn4sMrM3pw/Q8DbQq1NfD5uEbwYY6xcV7cIbNTfYKDJK0maQvg3ZHvCmBMhG9K516W1+Xa62p0KiMaYBPxz2AZscuopHcDj5nZefjQ0nb15Iffs4MlrS7fLXUP/PMujzcMeDp6eD6PD4skSZIkfUB/bkxUUkwDYK5oPgUfblgIzDOzm6wb7bSZ3Y0/3G8BhgNXRDf5AuA8M/tbjfosivJmA98zs6ci7J8x2fOEiDcTeCa69Wfiv9pnNnrx5htzHYkv91yM//K/KN7+DnCupLl470aJ3wL7lyZgRtjj+MP4d8CEyHcWsBx4EDgPmF/I42JgUbUJmGb2HL6r6BJJ5+CrP2bGvT0ROEq+HfnngCWSHgBG43M+6snvBvy+LsTnwvynmf2Jrvf6AuDf43Pems6bmyVJkiQrkdRpD2IkTcInLV7b13Xpb6ROO0mSpHGUOu0kSZIkSVpB6rQLqI8U1ZJuAEaVBZ9sZrf1Jl8zG9+LOg3HtxUvZ88YmujT/HpN6rT7juwNTZJBR78d5ggJ0xQzG10WPh13KTTURy3pDNyh8OMe1qdi+qjnLrF6oc+RNA54zczu6UUep5rZD2q8vwFwqJld0NMy+pp2qbEvUNI8+un/OUmSdE8Oc7SONvqX5nkcA0+pnSRJkgxg+ntjIpXaq4BSW67Gfijq+kjck70kzYp7vVPE2ynu/wJJ90jaKsJPkDQxzreN78O6FcpJnXaSJEkrqKTF7A8HqdSGVUup/QawbdRzXnzeAvYFbox4bwPWiPO9gOvifDXc5bE/MLf0nal1pLKqD48kSQYsDECdNqRSe1VSai83s8VxT5YCd8QXt2QuBW+gXSPfYvynwDYAkWY8cDlwV+E7kyRJkqwE+ntjonymVm9nbqVSu+N1f1NqF+/Jm4XXb9Jxf74HTDOflPvZsjpvCbyI9xZ1T+q0++5IkmTQ0d8bE6nUXjWU2vUyDPh/cT6+UP4w3OS5BzBc0oG9LCdJkiRpgP7emEil9iqg1G6AHwE/lLSAzr05PwV+HsNBXwTOkvQvvSwrSZIkqZN+65lImoNSqV2R1GknSZI0jtIzkSRJkiRJK0iddhlKpXaxToNXqZ067a5kL2WSJD1kQA5zKFXbpfwvBX5iZg82Od/Uaa+KDMD/C5IkWbnkMEff0EYLVdtmdlSzGxJB6rSTJEmSuqm7MSFXT2/Vyso0SKq2PW57nL8o6ftxXbMlbRjhqdPuKCd12kmSJK2gkhaz/MAFQQ/jlkKAMcDN9aRtxUGqtkv5TQfa49yAz8b5j4BvxvkkUqfd5UhlVYUjSZKkG+ilTvsMXGr0NwAze4CukwVXNqu6aruc1/AHOfjDuJguddrlpAGz65EkSdJD6m1MvG5mz5eF9fX/PuXl97Y+A121/Xo8fCulq1S3VVunnSRJkjSNehsTSyUdCqwuaUtJPwPuaWG96mFVV203Quq0kyRJkpZRb2PiOLxL+VXg1/i4/tdaVak6WaVV2w2SOu0kSZKkZXTrmYhf9v9tZh9ZOVVKmolSp12R1GknSZI0jnrqmTCzfwJvRldykiRJkiRJJ+qd3PcisFjSVOAfpUAzO74lteoDJL1oZl3mRBR/2asO1bak8cDtMcefSoYAACAASURBVMzRrLr1WLVtZuMljZH0KTO7tcFy78aX05avwmiWTvv9+HDVPsAnLYyakjbGh5Vqzn2o9pnVReq0O8iVHEmS9JJ6GxPXx7FKY2aXAZeBD/9Er00544EluKOiEzXSdFfu/o2mKWMMvoqkocYEvuLjMGtQT16NaICMKb2WtAL4CD6x9T+ACyLeU0BOokySJBkg1DUB08x+WenoaaFhPFwm6RJJSyXdLjdOFo2OI+JhU7I13ihpqqQVko6VdGKYEGeXrcooL+toSXNiEuR1JTOipFFhU1ws6cxCfEk6X9LDkv4b+JfCeysknS1pPr4io7ysA/GH9uSwPg4pT1OjPpMknRdmx8dKKxLkRskZkd8SSbtH+IVhc1wq6TuFOuwYeSyU2yeHAd8FDo48Dpa0nqSJ8f4CSftG2iGSrorP5gZcwlXrc3xRbsBcKum/5YbK6VH/fQqfXRfTZllW5UbNNrlLopT+psj3UUnfrlKXr8d9XVS8H0mSJEnrqasxIWl5PCA6Hb0se0t8Bv42uAzrgG7ijwb+FRdSfR94ycw+gC+xPKJGuuvNbEcz2x5ftvjFCD8XuNDMtgWeLsTfH7dRvj/y3aUsv+fMbAcz66LXjkmOc/Ff82MKkqZimmr1AdgIl299Bn/Agi97vc3MxgDb4yIrgNNiEsx2+DLY7SStha9Q+Wrkvxc+LHU6cHXU6WrgNOBOM9sJ7xk4R9J6wFfivr4P+DYwtsZ9BVgv8tkGXy56JvCxuIff7SZtkVOA/4n6fb3C+zvh34/t8AZZp8k/kvbGv0874T0fYyXtUZ6JUqedJEnSEuod5ij+570O/qu8am9AnSwPkyZ0NTZWYpqZvQC8IOl54LcRvpja/oLR0fOwAd6dXppnsCsdDZjLgdL+HXsAV8ZwxFOS7izL72oap5imWn3AtdFvAg8q9tbAfRUT5d6HGwv37HOSvoR/hhvhjR8DnjazOQBm9ncAdZ0bsDewj6ST4vU6wGb4tZ8XaRdJWtTNdb2Gq7rBP4dXzex1+XLatm7SNsLU0hwNSdfjDa7i0MvecSyI10PxxkUnf4eZXYwve6VdyokCSZIkTaKuxkSFyXb/JWke/ou3p5SbHofQ2cpYbmSsx5BYiUnAfma2UD45clzhvZ48UP7RfZSaaWrVp3iNAjCzGfEr+9PAJEk/oUN2taOZ/VU+SbQRg6WAAwoKbw9sfEJi0br51mdiZm+qwxbaDNNmd3ZRAT80s1/UnePYsZBLQ5MkSZpCvcMcOxSOdkkTqL9XoxFW0NG13qwJeOsDT8cv+8MK4bOAf4vzYvgMfH7B6pI2wocBGqGTHbKB+lRE0ubAn83sEuBSXO39NryB8nz0YHwyoj8MbCRpx0i7fjzUy+t0G3CcovUg6QMRPoPYMl3SaHpvrITaps0S3d2zj0l6h6Qh+IZt5Xtv3AZ8QdJQAEnvUkqrkiRJVhr1Ngj+T+H8Ddyc+LnmV4cfA7+J7vtbmpTnt4D7gGfjb+mh9VXg1/JNqG4qxL8B+Chuhnwcn5PRCJOAiyS9DOxc4f1q9anGOODrkl7Hl+geYWbL5RbIh3A99yxwXbekg4GfxYP3ZXzexDTgFLmJ8of4Hhf/hVsuV8M/z8/gFtHL5FbRZXTeM6SnFE2by+hs2iTq/Zx8u/EluKXz52VR7geuw22hV5SvLjGz2+XGzXujffQicDjwTBPqnyRJknRDtwZM8D0WzOyxsrBRpd03k6RVxFBQu5kd28x804CZJEnSOOqpATOopGJOPXOSJEmSJLWHOSRtjW/wNUzSvxbeehu937K6qUj6Ob5Co8i5IZoa8OX1JZLuA9YuC/68mS1uddlmNgkfOkqSJEn6KTWHOUJmtB+uO7658NYLwFVm1rJtyCW14Rrr0WXh04GTGrUySjoDeNHMftzD+lRMH/Xcxcx+3ZN86yj3UuAnZvZgk/M91cx+UOP9DYBDS4rrwUa71BytZ38itdhJkrSYasMcNXsmzOwm4CZJO5tZoxMRVxXa8BUQLWlMmNlRrcgX3za8amMC92C8pbhOkiRJkmrUO2digaRjJF0g1zBPlDSxpTVz1pA0OfTO1yrU0yUkHSLXYS+RdHYh/BOS5suV0neUZypXWv9Oro8+XtKDoWHuYrUsY3u5gvtRSUdH2FnA7nIV9AmSbpG0XZSzQNLpcf7dKHecXA19raSH4vqqCh7UWTH+oqTvx3XNLomt5Crui+R2x0ckfSbCK6qsJZ0FDIk6T65SdLnien9Jd8jZKMp5p6Rt5FruB+IeblnlOtrieidF2smS9opVHI9K2iniVVN9t0maGZ/rfEm7RHhD9zNJkiRpPvU2Ji4H3gl8HLgLX6L3QqsqVWAr4ILQO/8d/6UMvLWz5Nn4Ms4xwI6S9pM0ErgElzJtT9keGpKOxZdB7he661OAD5jZdsCEbuqzXZS3M3B61OEUYGaooH+KC6V2l++J8QYd8yp2p8PI+AHga7i18t10nXtRjfWA2XFdM4CjC++14Q6HT+NLU6vOaTGzU4CXo87VXBedFNdmdgOuHT8Gv7/fNrM/4ffs3NB9twNP1qj/e/BlxlvHcShuszwJ7ymB6qrvZ4CPmdkOwMGEqTOo634qddpJkiQtod7GxHvM7FvAP2KDr08DH2xdtd7iCTMrCYquwB88JXYEppvZs2b2BjAZ10F/CJhRWrZqZv9bSHMELng60MxKtslF+MZch+MP/1rcZGYvm9lfcHdDJQHTzKjHrrgrY2j0qIwqGCfvN7MnQ539APWrp18DpsR5uYL8N2b2ppk9CjyGP6ybzXHAN3Bt9pURdi9wqtzXsXlhP5JKLDezxXHdS4E7wqBZ1G/vTYcTYzodqu81gUvkqu5r8IZDibrup5ldbGbtZtY+ssELT5IkSapTb2Pi9fj7N7kZcRiF3TRbSHca5UYpPbQ2KYR9Gpck7QDMUYcGuqf1mYP/Qi/1RCzAexCKAqhylXi98rCivro8XaW6NUNlXWQTXJu9oVx2RUw83QcXZN0q6aM10tejRC+pvsfEsZmZLQNOAP6Mb3bWDqxVJd/67ufYsT5hcTAdSZIkfUS9jYmLJb0dtzfejNsMf9SyWnWwmaSSRfJQ4O7Ce/fju2WOkLQ6cAg+BDMb2EPSKAB13p58AfBl4GZJG8cDcVMzmwacjDeShtaoz76S1pE0HDdTzqFMBW1mr+FWyoPwX+2lfTRmdMmtuRwkV1ZvgXf1P0xtlfXrcqV3NTpdVzSyJuL3eRlwYoS/G3jMzM7DTaK9VXBXU30PwzcxexP4PLB6L8tJkiRJmkS9G31dGqd34Q+qlcXDwDHyyZ4P4rrnz0adnpZ0Cj7cIOCWWH2CXMd9fTQWnsG3xSbS3S3fLfMWvEv9ipjfIOA8M/tbjfosivJGAN8zs6ckPQv8U9JCYFJh3sSeZvaypJn4L/qZTbon1Xgcb2C9DZhgZq9IqqWyvhjXac+vNG+iguL6BXxuyN1xrXMk3QLsC3xervv+E7VXiNRDNdX3BcB1ko7AdyrtyYZrSZIkSQuoV6e9If6Q2NjMPinp/cDOZvZ/W13BpHvku4ZOMbO0ktZJ6rSTJEkaR73UaU/Cu583jteP4LPnkyRJkiRZxal34t8IM/uNpG8AmNkbkv7Zwnr1GZKOxHcULTLLzI5pcbk3AKPKgk82s9u6S2tm43tR7nCgi4sDH6Z5rq/zS5IkSfo/9TYm/hEPCQOQ9CHg+ZbVir7TOcfeGhX315DvYHm7mT1Vb36qogWvUO7+9dey7rLPoLoCfIqZjY4H/Jhmldns/FrGvHkwmNxWuZojSZI+pN5hjhPxVRxbxKS+X+HOgVZS0jl3opulm61mPB1DPYOOPr63SZIkyQClZmNC0mYAZjYf+DCwC760chszW9TiuhV1znNCpVxaloqkGyXNk7Q0Vm+U6lxNOX2QXLu9UNKMCKuoaI73TparuhdKOkvSgbjfYHLUaYiksZLuinrcJmmjSDs20i3EjZFVUTf67SpphsrV1vOjjvsW3jtNrqu+GzeIlsIr1kmu3L5Z0p3AHaqus+6izY64t0S+SyQdXOM6V0j6YaSfK2mHuGf/I2lCId7X4/NeJOk7hfCGPu8qdUgDZpIkSSsws6oHML9wfl2tuM0+cLnUkjgfhy8FHFV4/x3xdwiwBBgerw34bJz/CPhmnC8G3hXnG8TfdYF14nxLYG6cfxK4B1i3rKzpQHucrxlxRsbrg4GJcb4I2CPOzyldR5XrPAV/uA/DvRW3Rfg0YKsqadYA3hbnI4A/4Etbx8Z1rosvEf0DvsNq1TrhvS1PFq7xB8DhpfuET7ZdD/gZcFiErxX3/QDgkkK9htW4zhXAV+L8p1Gf9YGRwJ8jfG98yarwhu6UQp0b+ry7OwadsipJkmQlUHpOlh/dDXMUB5VXpl+iEvdbKLKD4+NX9mxgU7wxANWV07OASfFrvyQ8qqZo3gu4zMxeArDOSu4SWwGjgaly9fM3gU1irscGZlaSVF3ezXXVo98uR8APJC0C/ht4F7Ahbt28wcxeMrO/E9vG11GnqYVrrKazrqTNXgx8TNLZknY3s+7m0ZS2sV8M3GdmL5jZs8CrUce941iAOzG2puNzbfTzTpIkSVYS3Y2RW5XzvuAtSZGkcfgDf2cze0nSdDpU0RWV02Y2QdIHcX32PElj8XkfJUXzasArDdRHwFIz27lToD8UG6Gk334MmIr3NJTrt8s5DP9FP9bMXpe0gt6psosCqJLOurwhs0zSffj9u1XSl83sTkk7AJ8CzpR0h5l9t0Y5RX12uVp7jSj7h2b2i2Kinnze3TJ2LKRnIkmSpCl01zOxvaS/S3oB2C7O/y7pBUl/b3HdOumcyxgG/DUeLFvjm3vVRNIWZnafmZ0OPIv/uq2maJ4KHBk9BEUld7FODwMjFbpvSWtK2sbcoPk3SaVNyartygn0WL89DHgmGhIfATaP8BnAfjGfY306bKGN1KmizloVtNnyXVNfMrMr8KGTHWpdax3cBnxB0tAo812S/oUefN5JkiTJyqPmrzgz67P9D6yzzvllvAehxO+BCZKW4Q/12XVkeY6kLfFfv3cAC6miaDaz30saA8yV9BpwK75F9iR8e++X8W3IDwTOk+u418A10EuBI4GJkgy4vY66Narfngz8NoZn5gIPRb3nS7o6ru0ZvNejRL11qqaz/hxdtdk74vf1TXwzuK/Uca1VMbPbJb0PuDfaMi8Ch9OzzztJkiRZSdSl006SwUbqtJMkSRpHvdRpJ0mSJEmSVCQlRSsJSR8Hzi4LXm41zJeStqXryotXzeyDza5fs1AvtOBJkiTJwKRPhzlURTUds/VPMrOG+qFVRR/d2/RRz13M7Nc9ybfZxOqG18zsnl7kcaqZVd0uXH2kM19ZtEuNfbn6AzkkmSRJH5PDHL2jDTi0rytRYBxuI+0Np3bzfkWdeZIkSZKU0x8aE2tImixpmaRrS8sxS0g6RK6MXiLp7EL4J+Q66YWSuuxSKeloSb+LZZLHS3owFM1XdVOf7SXdK+lRdeiszwJ2l6ugT1A3CmxJ4yRNj+t5KK6v6q5SkvaMfBbLVdZrR/gKSSPivD3ybAMmACdEfXaXNEnSRXJV9COSPhNpxks6v1DOlKjbWcCQSD+5SrWKOvNzJO0vV3hL0kZRzjtVQbNd5Rrb4l5MirSTJe0VK3YelbRTxKum866oPm/kXit12kmSJK2hkhZzZR34L34Ddo3XE3HHwnRc5LQx8DguaFoDuBPYL14/Qei16VAtnxHpj8VdCGtH+FOF8w1q1OcMfFnlEFwe9UTUYRw+HFOXAjviP48v8VwN90fsVqXMdaKc98brXwFfi/MV+PbvxP2YXrzOQh6T8OWTq+FmyCcj3/HA+YV4U4Bxcf5iHZ/NkrKwK+LeTgEOibAumu0a+b0BbBv1nBeft4B9gRsjXjWddzX1ed33ungMSJ12kiRJH0MPddorgyfMbFacXwHsVnhvR/wB+qyZvYH7FfbApUUzLPTa1ll3fQS+t8aBZlayLC7CN+g6HH+g1eImM3vZzP6CNw52qhCnHgX2/Wb2pLkQ6wGqa563widiPhKvfxl5N8pvzOxNM3sUt2lu3YM8uuM44Bv4JNArI6ySZrsay81scdyTpcAd8eVcTMf9qabzrqY+h/rvdZIkSdIC+kNjonxWWW9nmZUeTJsUwj4N/Bw3NM5R7a2266lPSYG9O26dXEBXBXZRF12/5rkzb9DxGXWny65U72L6evLojk1w9fWGcqEV5pNS98HFYrdK+miN9OUK7aJeu3R/SjrvMXFsZmbLgBPoUJ+3470glfKt716PHYB9E0mSJP2U/tCY2EyhpMYnOd5deO9+4MOSRkhaHTgEuAs3IO4haRR00l2DP9i/DNwsaeN46G1qZtOAk/GhiaE16rOvpHUkDce70OdQpva2nimwq/Ew0CbpPfH683GN4MMcY+P8gEKaSqrxgyStJmkLfFO2hyP9mAjflM69LK9LWrNGvTqVEQ2wifhnsAw4McK7aLa7u+BuqKjzprr6PEmSJOlj+kNj4mHgGLkq+e3AhaU3zOxpfH7CNHwuwzwzu8l8p8kvAdfLd5K8upihmd2NP9xvAYYDV0T3+ALgPPO9KqqxKMqbDXzPzJ6KsH/GZM8TIt5MfH+Ml+O8OwV2RczsFVx1fU3U8U3gonj7O8C5kubiv7hL/BbYvzQBM8IexxtfvwMmRL6zcB32g8B5+E6cJS7GldkVJ2Ca2XPALPnE13Pw1R8z496eCBwlV19/DlgSwxKj8TkfveF7+JDGIklL4zW4+vzf4/Pems6bkyVJkiR9SOq0BwGSJuETRK/t67oMFFKnnSRJ0jhKz0SSJEmSJK1gldRpSzoS+GpZ8CwzO6bF5bZENW1m43tRp+H4Lqrl7BlDHX2aX8uYNw+qqz/6J9mLmCRJP2XADXMoFdyl/C8FfmJmDzY535Wq2a43v3rvZ7XvRzmp006SJGmcHOZY+bTRQgW3mR3V7IZEsLI12/Xm10b/UponSZIkwUBtTKSC2+O2x/mLkr4f1zVb0oYR3u812xXyU/xdEp/hwVXuZ0W9di2UOu0kSZKWMFDnTGwFfNHMZkmaSOGXraSN8a2+xwJ/BW6XtB++TPISYA8zW67ObgokHQt8DNjPzF6VdAputHw1uuJrsR1u5VwPWCDpFnxJ60lmVnqAr40/DP+Iy6R2jbS743ttbAR8ANgG13/PijhF70Y11gNmm9lpkn6EC7TOjPfacL/EFsA0dfgsumBmp0g61szG1CjrFGB0MY6kA3C9+CeAb5vZnySdBpxrZpMlrUV1L0Sn/CKvMbicagQuGZtB1/u5LvAxM3slGipX4jKrqpjZxfiSWNqlHDNIkiRpEgO1Z2JVV3CX8xq+Xwa4hbOYbiBotovsBlxpZv80sz/jAq8dK8SrpddOkiRJViIDtTGRCu7OvG4dM2nL0w0EzXZPqKXX7p7UaSdJkjSNgdqYWNUV3I3Q3zXb5WrwmcDBklaXNBLvzbm/QrzUaydJkvQTBuqciZKCeyKuir4Q+Cy4gjvmO0zDN426xcxuAp+Ahyu4VwOewedIEOnullRScO+NK7iHRR71KrhHEApuSc8SCm5gkpn9FH9Q7mlmL0vqsYK7QUqa7bcRmm1JRc32Miprtueb2WHlmZnZc5JmSVqCq7tfIDTbca1zYs7IvsDnJb0O/AnfWrwLFfL7T2BnXJ9uwH/GHIznKNxPXK99naQj8O3XU6+dJEnSRww4z0RSP0rNdlVSp50kSdI4Ss9EkiRJkiStYKAOc6x0NAAV3KnZrkF/1WlnT2GSJAOQATnMoSYrnZuBpPHA7bFleb1p2qhD/dwKVFsD3id1Wpn0W532APz3mCTJqsNgG+aoqGDuZvlmqxkPbNyH5beUPr63SZIkST9moDYmigrmOaFVvhlfnYCkGyXNk7Q0VnAQ4dW00weFvnlh2BappWuWdHKonhdKOkvSgbjrYHLUaYiksZLuinrcJmmjSDs20i3ErZFVUTcK7ipphsr11vOjjvsW3jtNrru+G7eIlsIr1kmu3b5Z0p3AHZLWkzRRrsleUMpbFdTZEfeWyHeJOrTYleq8QtIPI/1cSTvEPfsfSRNqXZekHaPMdaLMpZIq9qooddpJkiStwcwG3IELppbE+Th8WeCowvvviL9DgCXA8HhtwGfj/EfAN+N8MfCuON8g/q4LrBPnWwJz4/yTwD3AumVlTQfa43zNiDMyXh8MTIzzRbjSG+Cc0nVUuc5T8If7MNxdcVuETwO2qpJmDeBtcT4C+AO+vHVsXOe6+DLRP+B66qp1wntbnixc4w+Aw0v3CXgEV3n/DDgswteK+34AcEmhXsNqXOcK4Ctx/tOoz/rASODPta4rXp8J/BiXjH2jnu9Qv1VWJUmS9GNKz8LyY7B0Xd9vockOjpe0f5xvijcGnqOrdrrkmZgFTJL0G+D6CFsTOF/SGNwq+d4I3wu4zMxegi5a7hJbAaOBqfJJfqsDT8dcjw3MrCSquhxvnFRjJnA87oS4BfiYuiq4yxHwA0l74FbKdwEb4ubNG0r1jp4c6qjT1MI17g3sI/dxgJszN8MlXKdJ2gS43swelWuu/498o7UpZtadT+Pm+LsYGGpmLwAvSCrtjfKPKtf1J+C7eGPrlbhfSZIkyUpksDQm3hIWSRqHP/B3NrOXJE2nQxddUTttZhMkfRBXaM+TNBbfb6Kka14Nf1DVi4ClZrZzp8DuNwwrp6TgfgyYiv8iL1dwl3MY/ot+rJm9LmkFvdNlF2VQAg6o0JBZJuk+/P7dKunLZnanpB2ATwFnSrrDzL5bo5ySSvxNOmvF38Q/p1rXNRw3lK4ZYd0LrMaOhfRMJEmSNIWBOmeiXK1cZBjw12hIbI1v8FUTSVuY2X1mdjrwLN6bUU3XPBU4MnoIilruYp0eBkYqlN+S1pS0jblF82+SShuTdTFMFrGeKbiHAc/EA/cjwOYRPgPYL+ZzrE+HMbSROt0GHKfobpH0gfjbRZ0t3731JTO7Ah862aHWtdZBtesC+AXwLXxTt7MrJU6SJElax4DsmbDOCuaX8R6EEr8HJkhahj/UZ9eR5TnybayFuxAWUkXXbGa/j6GPuZJeA24FTsUVzxdJehnXQR8InCdXcq8B/BewFDgSmCjfAvv2OurWqIJ7MvDbGGaYCzwU9Z4v6eq4tmfwXo8S9dbpe3Edi+RK8uXAZ4DP0VWdvSN+X98EXge+Use11qLidcXn87qZ/Vq+F8s9kj5qZnf2srwkSZKkTgakZyJJekvqtJMkSRpHg8wzkSRJkiRJP2FADnMMNiR9nK5j/cvNbP9K8SPNtvjKiyKvmtkHm12/ZqFeqMGbTn/UaWcvYZIkA5Q+GeZQFWVzrLw4yawx07GqqKF7mz7quYuZ/bon+dZR7qXAT8zswSbne6qZVdzyO97vdzryIsXvgaRb8brW2gK+YfqlTjsbE0mS9HNymKNntAGHtipzMzuq2Q2J4NRu3q+oI++PmNmnmt2QSJIkSZpLXzYm1pA0WdIySdeWllqWkHRIaJOXhPioFP6JUCovlNRlF0pJR0v6XSyBPF7Sg6Fbvqqb+mwv6V5Jj6pDVX0WsHtonk9QN3prSeMkTY/reSiur2pfesRtj/Nqqu9Jki6Sa6AfkfSZCB8v6fxCXlOi/LOAIVHnyVWKLurIz5G0v1xVLUkbRTnvVAVNdpXraIvrnRRpJ0vaK1bcPCppp4hXTcc9RNJV8V24ATdolvJeIWlEnDekSa9Qz9RpJ0mStIJKWsxWH/gvfgN2jdcTcX/CdFzStDHwOC4pWgO4E9gvXj9BqLPp0DyfEemPxT0Ha0f4U4XzDWrU5wx8yeQQXAz1RNRhHD4cU5feOuI/jy/fXA13Q+xWo9zpdCi4q6m+J+FLU1fDTZ5P4mKm8cD5hbymAOPi/MU67v+SsrAr4v5NAQ6JsC6a7Br5vQFsG/WcF5+pgH2BGyNeNR33iXToxreLvEr3ZQUwouzzrkuTXuvolzrtJEmSfg5VdNp92TPxhJnNivMrgN0K7+0ITDezZ83sDdwxsAcuoJphoc62zirrI3AN9IFmVjIoLsI33zocf0DV4iYze9nM/oI3DnaqEGdm1GNXXG89VF311veb2ZPmsqsH8AdtPZSrvovpfmNmb5rZo7gNc+s682yE44Bv4JM4r4ywe4FTJZ0MbG5mL9dIv9zMFsd1LwXuiC/eYjquZW/gFEkP4A2pko57D/w7gJktwj+3Shwv34xsNh2adKh975IkSZIW05eNifLZZr2dfVZ6aG1SCPs0vvnTDsAc1d5Gu576lPTWu+NGyQV01VsXVdBvKbvroKLqu0bd3qDz59cbZTb4fXsT2FAupMJ84uk+uBjsVkkfrZG+XIFd1GOXrqWk4x4Tx2ZmtqyeyqmzJn17/N7X1KTXZGw/7JtIkiQZoPRlY2IzhW4an+R4d+G9+4EPSxohtxoeAtyF/yLdQ9Io6KSyBn+4fBm4WdLG8UDc1MymASfjQxNDa9RnX/k21sPx4Yo5lGm7rWd662ZwkKTVJG0BvBs3e64AxkT4pnTuSXld0po18ut0XdHImojf52X4sENFTXYvr6Oijhu/f4dG2Ogq5TSsSU+SJElWDn3pmXgYOEbSROBB4EI69ot4WtIp+HCDgFvM7CbwSXTA9dFYeIaOnT8xs7vlO1regnepXyHXWQs4z2qvClgU5Y0AvmdmT0l6FvhndK1PMrOf0rjeuhk8jjew3gZMMLNXJM3CddYP4g2A+YX4F+PK6/lm1mWvDeusI/8d3riYGfdvId6Lcws+36Fck90bqum4LwQukyvQl1F5I7OeaNKTJEmSlUDqtPs5kibhk0Cv7eu6DCZSp50kSdI4Ss9EkiRJkiStYMA3JsJxsKRC+FsOh0LYkeFMKB4/L4tzRgyV9LQ+XdJLukHuu1hRKPfjXOZKgQAAEspJREFU9eRnZuPr6ZWQdKmk95eFDa9wvQ/EvJB6r+fUwnml/BZL+nq9+TULSfvEUFjPKOm0+/pIkiQZBKxSe3OY2WXAZX1Q7v6xGuEkM/tMi8o4qkLYc8CYXmZ9KjFXolJ+CjU6cE4vy2kIM7sZuHlllpkkSZJUZsD3TARp01z1bJpv1TninifpHkmPSTqwm88nSZIkaSKDpWdiK+CLZjZLvjrkrX0nJG2M78g5FvgrcLuk/YBZwCXAHma2XJ2XmSLpWHylyH5m9mp0qY+K8w26qc92+NLF9YAF8pURp1DomZC0Nt64+CPujNg10u4OTAA2Aj4AbIObPGdFnOIS2mqsB8w2s9Mk/Qh3YZwZ77Xhy0i3AKZJek+1TMzsFEnHmlmt3o1TgNHFOJIOwE2hnwC+bWZ/knQacK6ZTZa0FrB6jTzfgy+//QK+RPdQXGq2D95Tsl+FNBtFnK3xHosuQ0PylUBfAjdlJUmSJM1hsPRMpE2zM6uCTbOcG+O6HgQq7s1hZhebWbuZtY/swUUlSZIklRksjYm0aXZmVbBp1krT/czG/mLATJIkGQQMlsZE2jTrZ7DYNJMkSZJ+wmCZM5E2zfoZLDbNJEmSpJ+QBsxVCKVN8y3SgJkkSdI4SgNmkiRJkiStYLAMc6x0JB0JfLUseJaZHdPicm8ARpUFn2xmt3WX1szG96Lc4UAXFwc+TPNcX+eXJEmS9B0DYphDYVk0s9Fl4dNxd0ND/dWSzgBeNLMf97A+FdNHPXeJlQt9jty6+ZqZ3dOLPE41s6rzG8K5caiZXdDTMnqCpH2A95vZWT1J3y419qVpNgPg312SJEk5OcyxcmjDV5P0F8YBu/Qyj1O7eX8DCpKwlYWZ3dzThkSSJEnSXAZSYyKV2dKekc9iSRPDool8A7ERcd4eebbhJs0Toj67K3XaSZIkSQsYSHMmVmlltqR1gEn4nIJHJP0K+ArwX5UqZ2YrJF1EYThG0hdJnXbqtJMkSZrMQOqZWNWV2VvhmulH4vUvI+9GSZ126rSTJEmaykBqTKQyuzpFHXZ3KuzUaUPf67STJEkGEQOpMbGqK7MfBtoKwxKfj2sE12GPjfMDCmk61SdInXaSJEnSVAbSnIlVWpkd2usjgWvigT0HuCje/g7wfyV9D5heSPZb4FpJ++JDD5A67SRJkqbx+uuv8+STT/LKK6/0dVWayjrrrMMmm2zCmmvW+i3ZwYDwTCTNQanTfovUaSdJ0gyWL1/O+uuvz/Dhw6mxGG9AYWY899xzvPDCC4wa1dmRqPRMJEmSJElzeeWVVwZVQwJAEsOHD2+ot2UgDXOsdDQAldm1SJ12kiRJ8xlMDYkSjV7TgG9MqIU6ZzO7DLisB3UaD9xuZk81kKaNUIab2f6NltkbVFsPXqrTc0At30RD9Ca/8IqcZ2Y9l1PNmwfl/1hyyC9JkqRHDIZhjoo6526Wdbaa8cDGfVh+S+nje4uZPdWrhkSSJEmrkJp71MHQobUWHq4cBkNjoqhzniNppqSb8ZUJSLpR0jxJS2NlBxH+oqTvyzXbsyVtGOEHyZXcCyXNiLC2yHd+HLsU8jlZrrdeKOmsUDm34/KrB+Sa7rGS7op63CZpo0g7NtItxI2RVVE3au4qaYbK1dbzo477Ft47Ta6rvhsXYpXCK9ZJrq++WdKdwB2S1pMrve+P+uwb8bposyPuLZHvEkkH17jOFZJ+GOnnStoh7tn/SJpQ+DyWFOp1vf7/9s4/yKryvOOf74aFVaRYA51xXIngbIkKCYJgM4nMpkHiD4pN4phM08RqbSTNj6adVm1NaGLU1jid2Jq2W02NDZjEAKYTYurPwMg0le1i+KULBMimJTFCaCMiaLA+/eN5D3u5e/fuXfaevXuW5zNz5r73nPe853nOuXfOc97zvt9HekQut/2FKm1/JLXZta/ayQ6CIAgGh5kVesGFp7amcjvwMq4wmW0/LX2eBGwF3pi+G/BbqfwF4NOpvAU4I5VPTZ8nAy2p3AZ0pfKlwPeBk8uOtRa4IJWbU53J6fv7gftSeTMu9Q1wZ+ZHP37ehN/cJ+LTQh9N69cA0/vZZwzwK6k8CdiJT3udk/w8GZ8iuhOXAe/XJry3ZU+Jj7cDv5udJ2AHLi1+N/DBtH5sOu/vA+4tsWtiFT97gI+m8heTPROAycALFa757+FKnhNxsa0f43ohVX83FSWrgiAIBslzzz137Ip6S9zVwPjx483MbM2aNTZ//nxbvHixTZ061W688UZbvny5zZ0712bMmGE7d+40M7Orr77arr/+epszZ461tbXZ6tWra/PNzLL7X/kyGnomyum0JJ+d+GR6yn4aOBMPBgB+CXwnlTfQK9P878D96Wk/yx/RDNwraQuwAjg3rV8AfMXMDkEfue6M6cAM4HFJG4FPA61prMepZpYJWC0bwK9apLnLEXC7pM3AE8AZuNT0RcC3zOyQmR3Ac1lQg02Pl/i4ELgp+bQWv5FPobJs9hbgYkl3SLrIzF4cwNdvp88twHoze8nM9gH95Ux50sxeNLNX8B6pNw3QfhAEwahk06ZNdHR00N3dzbJly9ixYwednZ1cd9113H333Ufr9fT00NnZycMPP8ySJUuGrJMxGoOJl7OCpHb8hv82M3srrnqZSUUfSVEWlMhYm9kS/IZ/JrAhzTr4Y+AF4K34K4yxg7BHwLNmNistM81s4XH4VYs0dzkfxJ/o55gn4nqBoUllv1xSFvC+Er+mmFm3VZDNNs8nMhsPDm7NXtFUoVQ+u1xau9J4jcFLkleS0w6CICg4c+fO5fTTT2fcuHGcffbZLFzot5uZM2fS09NztN5VV11FU1MTbW1tTJs2jW3btg3puKMhmKgkGZ0xEfhfMzsk6c144q+qSDrbzNab2VJgHx5UTASeN0889SF6eyweB65JPQSlct2lNm0HJitJgUtqlnSeubrmLyRlCcv6qEuWYscnzT0R2GtmRyS9k94n9qeA307jOSbQqyQ6GJseBT4h+QghSeenzz6y2Wn2xSEzW46/OpldzdcgCILg+Bg3btzRclNT09HvTU1NvPZab/5KlQ3uLP8+WAofTJhPMczknO8s2/wIMEZSNz5Q8+kamrwzDVbcio912AT8A3B1el3yZtITupk9gnfJd6Xu/j9NbdwPdKR1bwCuBO5I+28EsgGc1wB/n+rVciXX4cHB4VQeSJr7AeCC9Hrmw8C2ZPczwIPJt3/Dez0yarXp8/jrn82Snk3fAa4Ctqb9ZwBfBWYCnWndXwK31uBrEARBkBMrVqzg9ddfZ9euXezevZvp06cPvFMVCq8zAWBmv9PP+lfxQZKVtp1SUl4JrEzl91ao/kOOTUx1Y8m+f40HKqVtrwJWlazaSIV04Wa2AX91knFDJVtL6n8G+Ewq/5QBAhDz9Ohv62fbbcBttdpkZvfjQVJW7zCeKK18/z7nA+/FqElwy8zOKimXHzPb9nM8UKlUZ1EtxwmCIMiFgrwynTJlCvPmzePAgQN0dHTQ0jK0ZNGjIpgIgiAIghOVgwcPAtDe3k57e/vR9WvXrj1aLt+2YMECOjo6qBcRTIwwJL0buKNs9Y+siiqmpJn0nXnxqpldWG/76oVykgwPgiAIhp+GZA1VjhLYx4uGKIGdk1nVjv1ZBpDAHm6b6kGpX5JuAZ4ysyfqfZwLJOuTM7Qg3ZNBEIwcuru7OeeccxptRi5U8k0jLGtoSGAPMw0+t8eFmS3NI5AIgiCoJ414KM+bwfrUqGAiJLBPMAnsVO/P0vXeLOlzNfh1f7o2SFqa9t0q6Z6SKalr5WJYnamNi6rYGXLaQRDUlZaWFvbv3z+qAgozY//+/YMalNmop9WbgBlmNksuLPVw+p4pV15rZv8j6STgPyWtSlNAxwNPm9nN8hwMf4BPM1wKvNvMfqJehcS9wMVm9oqkNuDr+DTJS4ErgAuT/sRp6VgfxyWluyQ147LQV5jZvnQjvQ24Fs8i+nEze0pS+VTUctYBF0n6MfAarl4JLjy1pJ99XgHeY2YHJE0Cnk6B1mzgA3imzTHAM/QKVlWzaTbwluTj7cD3zOzadJ46JT2RbPlbM3tA0lh8OutlwE/N7HIASRMH8PW/0vX8Ij674u24QNZWfJrsQlx9dB4+C+Xbkubj02z786uUL5nZLcmWZcAiYHXaNsbM5km6DJ96uqCSgWZ2D3AP+GuOAfwJgiAYkNbWVvbs2cO+faPrEaWlpYXW1taa64+Uru9KEtjZgMNMAns/fSWwL07lTAL7m8BDaV0z8CVJs3BVxF9P6wcrgQ1+c31eleWmK049TawDPgn8CA+YLlbtEtjzccXHPhLYACnA6E8Cu9SmcgnsxZIyPYxSCeybJbUCD5nZD+XaFH8j6Q58DEY1PQs4VgL7FDN7CXhJUiaBvTAtP0j1TsGv64RKflXgnZJuwPOJnAY8S28wkV3zUln0IAiC3Glubmbq1PKx5CceIyWY6E8C+5CktdQggS3pQuByXAJ7DvAJeiWwm/An/lrJJLCP0WhQ5bwQ1cgksHfjapmTGJwE9hFJPdRfArs8kOmWtB4/f9+VdL2ZfU/SbLyH4lZJT2Y9A/0wkAS2gL8ys38q3UnSpwZyQFILLhx2gZn9t3yQZuk5yY5Xm5Q2uJx2V58hmEEQBMFx0KgxEyGB3T+jVQL7UeBaSaekY54h6df686uMLHD4edr/yiHaEgRBENSRhvRMmNl+SZkE9mG8ByHjEWCJXAJ7O7VLYLfhT79P0iuBvUrSh1ObRyWw06uPLkm/BL4L/AW9EtiHcdXIK4G/S2MFxgB34V3r1wD3yd+5P1aDbeuAd5nZYUm1SmCvTq8ZuiiRwJaUSWDvpa8Edi02fT75sVlSE/76ZREugf0hSUeAn+Hpxefi5/V14Ajw0Rp87Rcze0zSOcB/pFjmIJ7CvJpf2b6/kHQvPv7iZ5XqBEEQBI2jIToTQdBoJL2EB6tFZhIuLV50wo+RRfgxchiJPrzJzCaXrxwpYyaCYLjZXkl4pUhI6iq6DxB+jDTCj5FDkXyIYKIOKCSwQwI7CILgBCaCiTqQbqaDuqGa2RZcW6EwVAuOgiAIghOXRs3mCIJGc0+jDagDo8EHCD9GGuHHyKEwPsQAzCAIgiAIhkT0TARBEARBMCQimAiCIAiCYEhEMBEUHkmXSNouaaekmypsHyfpwbR9vaSzSrb9eVq/Pc3KqanNAvlxn6S9SSBuWKi3H5LOlLRG0nPyTMJ/VEAfWuSZbTclHz5X3mYR/CjZ9gZ55uHvlLeZBzn9N3rkmZk3ShoWbf2c/DhV0kpJ2yR1Kyk3DztmFksshV1wmfRdwDRgLK6keW5ZnT8EOlL5A8CDqXxuqj8On/K6K7U3YJtF8CNtm49LoW8t8PU4HZid6kwAduR5PXLyQXgCPPAkhOuB3yjatSjZ70+Ar+FJAAv3m0rbeoBJw/G/yNmPfwGuS+WxeOLHYfGpdImeiaDozAN2mtlu81wo38BTzJdyBf6HA1gJvEuS0vpvmNmr5llrd6b2ammzCH5gnk22UmbcvKi7H2b2vJk9A2CejbYbz6ZbJB/MzA6m+s1pyXv0ey6/KXl24cuBL+dsf0YufjSAuvshT/cwH/hn8HxQ5vmahp0IJoKicwaeTC1jD31vNEfrmNlrwIvAG6vsW0ub9SYPPxpBrn6kbt/z8Sf7vMjFh/RqYCOeg+ZxM8vTh2NsLLelUp1BXIu7gBvwjMDDQV5+GPCYpA2SPpKD3eXk4cdUPLnlV9Jrpy9LGp+P+dWJYCIIgkIgzxi7CviUmR1otD2Dxcz+z8xm4cn+5kma0WibBoukRXhW4w2NtqUOvMPMZgOXAh+TNL/RBh0HY/DXmP9oZufjCS2HZYxXORFMBEXnJ3jK+YzWtK5iHUlj8DTv+6vsW0ub9SYPPxpBLn5IasYDiQfM7KFcLK9gX7kdleoM9lqkbug1wCV1tbovefjxdmCxpB68m/43JS3Pw/hKNpbZUrFOrdfDzLLPvcC3yP/1Rx5+7AH2lPRyrcSDi+GnEQM1YomlXgseme/Gu/uyQU3nldX5GMcOavpmKp/HsYOaduODpAZsswh+lOx3FsM3ADOP6yHgq8BdBfZhMmlgHHASsA5YVDQ/yvZtZ3gGYOZxPcYDE1Kd8cD3gUuK5kfatg6YnsqfBe4cjv9JH/8acdBYYqnnAlyGj/DfBdyc1t0CLE7lFmAFPmipE5hWsu/Nab/twKXV2iyoH18HngeO4E8xv180P4B34O+3NwMb03JZwXx4C/CD5MNWYGlRf1Ml29sZhmAip+sxDb85bwKeLfh/fBbQlX5b/wr86nD4Ur6EnHYQBEEQBEMixkwEQRAEQTAkIpgIgiAIgmBIRDARBEEQBMGQiGAiCIIgCIIhEcFEEARBEARDIoKJIAiCIAiGRAQTQRAEQRAMif8HeBKf7xQtcGQAAAAASUVORK5CYII=\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Permutation feature importance:"
      ],
      "metadata": {
        "id": "Mo5Xm6a7NgNF"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import eli5\n",
        "from eli5.sklearn import PermutationImportance\n",
        "\n",
        "perm = PermutationImportance(cRF, random_state=1).fit(X_train.values, y_train.values)\n",
        "eli5.show_weights(perm, feature_names = X_train.columns.tolist())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 399
        },
        "id": "RiyfohcFxjsJ",
        "outputId": "9189beb4-2242-46e8-f0e3-bce44f20e2f3"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "    <style>\n",
              "    table.eli5-weights tr:hover {\n",
              "        filter: brightness(85%);\n",
              "    }\n",
              "</style>\n",
              "\n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "        <table class=\"eli5-weights eli5-feature-importances\" style=\"border-collapse: collapse; border: none; margin-top: 0em; table-layout: auto;\">\n",
              "    <thead>\n",
              "    <tr style=\"border: none;\">\n",
              "        <th style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">Weight</th>\n",
              "        <th style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">Feature</th>\n",
              "    </tr>\n",
              "    </thead>\n",
              "    <tbody>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 80.00%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0165\n",
              "                \n",
              "                    &plusmn; 0.0005\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                transacted_w_address_total\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 82.37%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0138\n",
              "                \n",
              "                    &plusmn; 0.0005\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                first_sent_block\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 88.88%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0071\n",
              "                \n",
              "                    &plusmn; 0.0004\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_min\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 90.39%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0058\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                first_received_block\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 90.91%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0053\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_max\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 91.16%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0051\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_as_share_max\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 91.98%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0045\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                first_block_appeared_in\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 92.42%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0041\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_as_share_median\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 92.98%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0037\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                last_block_appeared_in\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 94.03%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0029\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_as_share_min\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 94.21%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0028\n",
              "                \n",
              "                    &plusmn; 0.0002\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_median\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 94.53%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0026\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_as_share_mean\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 94.79%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0024\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_total\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 95.61%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0019\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_mean\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.26%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0010\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                fees_as_share_total\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 97.26%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0010\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                blocks_btwn_txs_total\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 98.00%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0006\n",
              "                \n",
              "                    &plusmn; 0.0000\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                blocks_btwn_txs_mean\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 98.07%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0006\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                blocks_btwn_txs_median\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 98.29%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0005\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                blocks_btwn_txs_max\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "        <tr style=\"background-color: hsl(120, 100.00%, 98.42%); border: none;\">\n",
              "            <td style=\"padding: 0 1em 0 0.5em; text-align: right; border: none;\">\n",
              "                0.0004\n",
              "                \n",
              "                    &plusmn; 0.0001\n",
              "                \n",
              "            </td>\n",
              "            <td style=\"padding: 0 0.5em 0 0.5em; text-align: left; border: none;\">\n",
              "                btc_transacted_mean\n",
              "            </td>\n",
              "        </tr>\n",
              "    \n",
              "    \n",
              "        \n",
              "            <tr style=\"background-color: hsl(120, 100.00%, 98.42%); border: none;\">\n",
              "                <td colspan=\"2\" style=\"padding: 0 0.5em 0 0.5em; text-align: center; border: none; white-space: nowrap;\">\n",
              "                    <i>&hellip; 35 more &hellip;</i>\n",
              "                </td>\n",
              "            </tr>\n",
              "        \n",
              "    \n",
              "    </tbody>\n",
              "</table>\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "    \n",
              "\n",
              "\n",
              "\n"
            ]
          },
          "metadata": {},
          "execution_count": 19
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Drop column feature importance:"
      ],
      "metadata": {
        "id": "7BsujnFC5HNk"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "model = cRF\n",
        "random_state = 42\n",
        "\n",
        "# clone the model to have the exact same specification as the one initially trained\n",
        "model_clone = clone(model)\n",
        "# set random_state for comparability\n",
        "model_clone.random_state = random_state\n",
        "# training and scoring the benchmark model\n",
        "model_clone.fit(X_train.values, y_train.values)\n",
        "benchmark_score = model_clone.score(X_train.values, y_train.values)\n",
        "# list for storing feature importances\n",
        "importances = []\n",
        "\n",
        "# iterating over all columns and storing feature importance (difference between benchmark and new model)\n",
        "for col in X_train.columns:\n",
        "    model_clone = clone(model)\n",
        "    model_clone.random_state = random_state\n",
        "    model_clone.fit(X_train.drop(col, axis = 1).values, y_train.values)\n",
        "    drop_col_score = model_clone.score(X_train.drop(col, axis = 1).values, y_train.values)\n",
        "    importances.append(benchmark_score - drop_col_score)\n",
        "\n",
        "importances_df = pd.DataFrame (X_train.columns, importances)\n",
        "get_drop_importance = importances_df"
      ],
      "metadata": {
        "id": "26LuYwfD5dkF"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "get_drop_importance.reset_index(inplace=True)\n",
        "get_drop_importance = get_drop_importance.rename(columns = {'index':'Imp', 0:'Feature'})\n",
        "get_drop_importance = get_drop_importance.sort_values('Imp', ascending=False)\n",
        "get_drop_importance"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "4NaojBjKLNNU",
        "outputId": "aab72b4a-7794-42a9-89bf-880c332e7138"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "         Imp                        Feature\n",
              "0  -0.000032              num_txs_as_sender\n",
              "1  -0.000032            num_txs_as receiver\n",
              "2  -0.000016        first_block_appeared_in\n",
              "3   0.000005         last_block_appeared_in\n",
              "4  -0.000027             lifetime_in_blocks\n",
              "5  -0.000038                      total_txs\n",
              "6   0.000043               first_sent_block\n",
              "7   0.000000           first_received_block\n",
              "8  -0.000038      num_timesteps_appeared_in\n",
              "9  -0.000027           btc_transacted_total\n",
              "10 -0.000005             btc_transacted_min\n",
              "11 -0.000022             btc_transacted_max\n",
              "12 -0.000005            btc_transacted_mean\n",
              "13 -0.000011          btc_transacted_median\n",
              "14 -0.000054                 btc_sent_total\n",
              "15 -0.000032                   btc_sent_min\n",
              "16 -0.000016                   btc_sent_max\n",
              "17 -0.000027                  btc_sent_mean\n",
              "18 -0.000011                btc_sent_median\n",
              "19 -0.000022             btc_received_total\n",
              "20 -0.000016               btc_received_min\n",
              "21 -0.000011               btc_received_max\n",
              "22 -0.000027              btc_received_mean\n",
              "23 -0.000022            btc_received_median\n",
              "24  0.000032                     fees_total\n",
              "25  0.000032                       fees_min\n",
              "26  0.000065                       fees_max\n",
              "27  0.000016                      fees_mean\n",
              "28  0.000027                    fees_median\n",
              "29 -0.000027            fees_as_share_total\n",
              "30  0.000005              fees_as_share_min\n",
              "31  0.000016              fees_as_share_max\n",
              "32  0.000016             fees_as_share_mean\n",
              "33  0.000016           fees_as_share_median\n",
              "34 -0.000043          blocks_btwn_txs_total\n",
              "35  0.000005            blocks_btwn_txs_min\n",
              "36 -0.000032            blocks_btwn_txs_max\n",
              "37 -0.000032           blocks_btwn_txs_mean\n",
              "38 -0.000016         blocks_btwn_txs_median\n",
              "39 -0.000005    blocks_btwn_input_txs_total\n",
              "40 -0.000038      blocks_btwn_input_txs_min\n",
              "41 -0.000027      blocks_btwn_input_txs_max\n",
              "42 -0.000022     blocks_btwn_input_txs_mean\n",
              "43 -0.000016   blocks_btwn_input_txs_median\n",
              "44 -0.000032   blocks_btwn_output_txs_total\n",
              "45 -0.000016     blocks_btwn_output_txs_min\n",
              "46 -0.000027     blocks_btwn_output_txs_max\n",
              "47 -0.000038    blocks_btwn_output_txs_mean\n",
              "48 -0.000032  blocks_btwn_output_txs_median\n",
              "49 -0.000038   num_addr_transacted_multiple\n",
              "50  0.000011     transacted_w_address_total\n",
              "51 -0.000022       transacted_w_address_min\n",
              "52  0.000005       transacted_w_address_max\n",
              "53 -0.000005      transacted_w_address_mean\n",
              "54 -0.000005    transacted_w_address_median"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-511cc009-d1af-41f5-9ebf-fcc05b34f24f\">\n",
              "    <div class=\"colab-df-container\">\n",
              "      <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Imp</th>\n",
              "      <th>Feature</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>num_txs_as_sender</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>num_txs_as receiver</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>-0.000016</td>\n",
              "      <td>first_block_appeared_in</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0.000005</td>\n",
              "      <td>last_block_appeared_in</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>lifetime_in_blocks</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>-0.000038</td>\n",
              "      <td>total_txs</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>0.000043</td>\n",
              "      <td>first_sent_block</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>0.000000</td>\n",
              "      <td>first_received_block</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>-0.000038</td>\n",
              "      <td>num_timesteps_appeared_in</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>btc_transacted_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>-0.000005</td>\n",
              "      <td>btc_transacted_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>-0.000022</td>\n",
              "      <td>btc_transacted_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>-0.000005</td>\n",
              "      <td>btc_transacted_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>-0.000011</td>\n",
              "      <td>btc_transacted_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>-0.000054</td>\n",
              "      <td>btc_sent_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>btc_sent_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>-0.000016</td>\n",
              "      <td>btc_sent_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>btc_sent_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>-0.000011</td>\n",
              "      <td>btc_sent_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>-0.000022</td>\n",
              "      <td>btc_received_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>-0.000016</td>\n",
              "      <td>btc_received_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>-0.000011</td>\n",
              "      <td>btc_received_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>btc_received_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>-0.000022</td>\n",
              "      <td>btc_received_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>0.000032</td>\n",
              "      <td>fees_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>0.000032</td>\n",
              "      <td>fees_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>0.000065</td>\n",
              "      <td>fees_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>0.000016</td>\n",
              "      <td>fees_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>0.000027</td>\n",
              "      <td>fees_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>fees_as_share_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>30</th>\n",
              "      <td>0.000005</td>\n",
              "      <td>fees_as_share_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>31</th>\n",
              "      <td>0.000016</td>\n",
              "      <td>fees_as_share_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>32</th>\n",
              "      <td>0.000016</td>\n",
              "      <td>fees_as_share_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>33</th>\n",
              "      <td>0.000016</td>\n",
              "      <td>fees_as_share_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>34</th>\n",
              "      <td>-0.000043</td>\n",
              "      <td>blocks_btwn_txs_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>35</th>\n",
              "      <td>0.000005</td>\n",
              "      <td>blocks_btwn_txs_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>36</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>blocks_btwn_txs_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>37</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>blocks_btwn_txs_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>38</th>\n",
              "      <td>-0.000016</td>\n",
              "      <td>blocks_btwn_txs_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>39</th>\n",
              "      <td>-0.000005</td>\n",
              "      <td>blocks_btwn_input_txs_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>40</th>\n",
              "      <td>-0.000038</td>\n",
              "      <td>blocks_btwn_input_txs_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>41</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>blocks_btwn_input_txs_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>42</th>\n",
              "      <td>-0.000022</td>\n",
              "      <td>blocks_btwn_input_txs_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>43</th>\n",
              "      <td>-0.000016</td>\n",
              "      <td>blocks_btwn_input_txs_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>44</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>blocks_btwn_output_txs_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>45</th>\n",
              "      <td>-0.000016</td>\n",
              "      <td>blocks_btwn_output_txs_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>46</th>\n",
              "      <td>-0.000027</td>\n",
              "      <td>blocks_btwn_output_txs_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>47</th>\n",
              "      <td>-0.000038</td>\n",
              "      <td>blocks_btwn_output_txs_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>48</th>\n",
              "      <td>-0.000032</td>\n",
              "      <td>blocks_btwn_output_txs_median</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>49</th>\n",
              "      <td>-0.000038</td>\n",
              "      <td>num_addr_transacted_multiple</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50</th>\n",
              "      <td>0.000011</td>\n",
              "      <td>transacted_w_address_total</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>51</th>\n",
              "      <td>-0.000022</td>\n",
              "      <td>transacted_w_address_min</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>52</th>\n",
              "      <td>0.000005</td>\n",
              "      <td>transacted_w_address_max</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>53</th>\n",
              "      <td>-0.000005</td>\n",
              "      <td>transacted_w_address_mean</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>54</th>\n",
              "      <td>-0.000005</td>\n",
              "      <td>transacted_w_address_median</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-511cc009-d1af-41f5-9ebf-fcc05b34f24f')\"\n",
              "              title=\"Convert this dataframe to an interactive table.\"\n",
              "              style=\"display:none;\">\n",
              "        \n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
              "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
              "  </svg>\n",
              "      </button>\n",
              "      \n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      flex-wrap:wrap;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "      <script>\n",
              "        const buttonEl =\n",
              "          document.querySelector('#df-511cc009-d1af-41f5-9ebf-fcc05b34f24f button.colab-df-convert');\n",
              "        buttonEl.style.display =\n",
              "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "        async function convertToInteractive(key) {\n",
              "          const element = document.querySelector('#df-511cc009-d1af-41f5-9ebf-fcc05b34f24f');\n",
              "          const dataTable =\n",
              "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                     [key], {});\n",
              "          if (!dataTable) return;\n",
              "\n",
              "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "            + ' to learn more about interactive tables.';\n",
              "          element.innerHTML = '';\n",
              "          dataTable['output_type'] = 'display_data';\n",
              "          await google.colab.output.renderOutput(dataTable, element);\n",
              "          const docLink = document.createElement('div');\n",
              "          docLink.innerHTML = docLinkHtml;\n",
              "          element.appendChild(docLink);\n",
              "        }\n",
              "      </script>\n",
              "    </div>\n",
              "  </div>\n",
              "  "
            ]
          },
          "metadata": {},
          "execution_count": 42
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "loFg60CxKV82"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## RF Trees Analysis\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "This section explores the voting of all 50 RF trees for actors in the testing set."
      ],
      "metadata": {
        "id": "Z6N7Zznvapf0"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Analysis on RF tree voting can show the effect of increased classification accuracy after selecting important features. Refer to the paper to see the before and after effects of selecting features on the RF tree voting (Figure 12b)."
      ],
      "metadata": {
        "id": "E1yCuBkUcRSn"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Visualizing the features making up each of the 50 RF trees (there are many trees as we don't set a limit of number of features per tree, but for easier analysis the number of features per tree can be limited):"
      ],
      "metadata": {
        "id": "mlR-cfjZdiNa"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "n=0\n",
        "while n < 50:\n",
        "    classes = ['0','1']\n",
        "    fig = plt.figure(figsize=(50, 50))\n",
        "    plot_tree(cRF.estimators_[n], class_names=classes, filled=True, impurity=True, rounded=True)\n",
        "    n+=1"
      ],
      "metadata": {
        "id": "SOUAMytnbv9N"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Look at individual RF tree votes for an actor. Change the \"sample_id\" below for the index of the actor in the testing set:"
      ],
      "metadata": {
        "id": "pMAtcpeCgr4c"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "estimator = cRF\n",
        "\n",
        "n_nodes_ = [t.tree_.node_count for t in estimator.estimators_]\n",
        "children_left_ = [t.tree_.children_left for t in estimator.estimators_]\n",
        "children_right_ = [t.tree_.children_right for t in estimator.estimators_]\n",
        "feature_ = [t.tree_.feature for t in estimator.estimators_]\n",
        "threshold_ = [t.tree_.threshold for t in estimator.estimators_]\n",
        "\n",
        "\n",
        "def explore_tree(estimator, n_nodes, children_left,children_right, feature,threshold,\n",
        "                suffix='', print_tree= False, sample_id=0, feature_names=None):\n",
        "\n",
        "    if not feature_names:\n",
        "        feature_names = feature\n",
        "\n",
        "    # The tree structure can be traversed to compute various properties such\n",
        "    # as the depth of each node and whether or not it is a leaf.\n",
        "    node_depth = np.zeros(shape=n_nodes, dtype=np.int64)\n",
        "    is_leaves = np.zeros(shape=n_nodes, dtype=bool)\n",
        "\n",
        "    stack = [(0, -1)]  # seed is the root node id and its parent depth\n",
        "    while len(stack) > 0:\n",
        "        node_id, parent_depth = stack.pop()\n",
        "        node_depth[node_id] = parent_depth + 1\n",
        "\n",
        "        # If we have a test node\n",
        "        if (children_left[node_id] != children_right[node_id]):\n",
        "            stack.append((children_left[node_id], parent_depth + 1))\n",
        "            stack.append((children_right[node_id], parent_depth + 1))\n",
        "        else:\n",
        "            is_leaves[node_id] = True\n",
        "\n",
        "    # First let's retrieve the decision path of each sample. The decision_path\n",
        "    # method allows to retrieve the node indicator functions. A non zero element of\n",
        "    # indicator matrix at the position (i, j) indicates that the sample i goes\n",
        "    # through the node j.\n",
        "\n",
        "    node_indicator = estimator.decision_path(X_test.values)\n",
        "\n",
        "    # Similarly, we can also have the leaves ids reached by each sample.\n",
        "\n",
        "    leave_id = estimator.apply(X_test.values)\n",
        "\n",
        "    # Now, it's possible to get the tests that were used to predict a sample or\n",
        "    # a group of samples. First, let's make it for the sample.\n",
        "\n",
        "    node_index = node_indicator.indices[node_indicator.indptr[sample_id]:\n",
        "                                        node_indicator.indptr[sample_id + 1]]\n",
        "\n",
        "    for node_id in node_index:\n",
        "        tabulation = \"\"\n",
        "\n",
        "        if (X_test.values[sample_id, feature[node_id]] <= threshold[node_id]):\n",
        "            threshold_sign = \"<=\"\n",
        "        else:\n",
        "            threshold_sign = \">\"\n",
        "\n",
        "    print(\"%sPrediction for sample %d: %s\"%(tabulation,\n",
        "                                          sample_id,\n",
        "                                          estimator.predict(X_test.values)[sample_id]))\n",
        "\n",
        "    # For a group of samples, we have the following common node.\n",
        "    sample_ids = [sample_id, 1]\n",
        "    common_nodes = (node_indicator.toarray()[sample_ids].sum(axis=0) ==\n",
        "                    len(sample_ids))\n",
        "\n",
        "    common_node_id = np.arange(n_nodes)[common_nodes]\n",
        "\n",
        "    for sample_id_ in sample_ids:\n",
        "        print(\"Prediction for sample %d: %s\"%(sample_id_,\n",
        "                                          estimator.predict(X_test.values)[sample_id_]))\n",
        "        \n",
        "for i,e in enumerate(estimator.estimators_):\n",
        "\n",
        "    print(\"Tree %d\\n\"%i)\n",
        "    explore_tree(estimator.estimators_[i],n_nodes_[i],children_left_[i],\n",
        "                 children_right_[i], feature_[i],threshold_[i],\n",
        "                suffix=i, sample_id=11983, feature_names=list(X_train.columns)[2:])\n",
        "    print('\\n'*2)"
      ],
      "metadata": {
        "id": "n7XxXe65Of5G"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "SzfDmu1bOfvT"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "# **Acknowledgements**\n",
        "\n",
        "\n",
        "---\n",
        "---\n",
        "\n",
        "\n",
        "Released by: Youssef Elmougy, Ling Liu\n",
        "\n",
        "\n",
        "\n",
        "School of Computer Science, Georgia Institute of Technology\n",
        "\n",
        "Contact: yelmougy3@gatech.edu\n",
        "\n",
        "\n",
        "---\n",
        "\n",
        "Github Repository: [https://www.github.com/git-disl/EllipticPlusPlus](https://www.github.com/git-disl/EllipticPlusPlus)\n",
        "\n",
        "\n",
        "If you use our dataset in your work, please cite our paper:\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        ">> Youssef Elmougy and Ling Liu. 2023. Demystifying Fraudulent Transactions and Illicit Nodes in the Bitcoin Network for Financial Forensics.\n",
        "\n",
        "---\n",
        "\n"
      ],
      "metadata": {
        "id": "BwrFHYfy5hrz"
      }
    }
  ]
}